03. juni 2001 - 22:28Der er
16 kommentarer og 1 løsning
beskeder via internet
Hej Eksperter.
Jeg vil til at lave et program, hvor jag kan chatte med min kammerat i den anden \"ende\". Min ven og jeg har begge en fast ip, så det skulle vel ikke være et stort problem at lave denne lille funktion til at sende meddelserne med... eller hvad?
Jeg beklager at jeg tilsyneladende har et problem med at udtrykke mig klart i øjeblikket.
Winsock er en fil der ligger på din harddisk som en del af windows (Vistnok en dll) ??!!??
Hvis du søger efter winsock i din vb-hjælp skulle du få mere end rigeligt med oplysninger. Kan ikke lige hjælpe dig mere ligenu, da jeg ikke har adgang til vb, måske senere hvis du ikke finder på noget.
Du behøver slet ikke en WinSock control se bare her:
Private Declare Function NetMessageBufferSend Lib \"NETAPI32.DLL\" _ (yServer As Any, yToName As Byte, yFromName As Any, yMsg As Byte, _ ByVal lSize As Long) As Long Private Const NERR_Success As Long = 0&
Public Function BroadcastMessage(UserOrMachine As String, _ FromName As String, Message As String) As Boolean
Dim ToName() As Byte Dim FromName() As Byte Dim MessageToSend() As Byte
\'Put data into byte arrays ToName = UserOrMachine & vbNullChar FromName = FromName & vbNullChar MessageToSend = Message & vbNullChar
\'Broadcast message via API If NetMessageBufferSend(ByVal 0&, ToName(0), ByVal 0&, _ FromName(0), UBound(MessageToSend)) = NERR_Success Then \'Return True if it worked BroadcastMessage = True End If
End Function
Hvordan den bruges:
Eks: x = BroadcastMessage(tekst1.teks, tekst2.teks, tekst3.tekst)
Tekst1 er Modtager Computerens navn (\"Min vens computer) Tekst2 er Afsenderens navn (Kurt, Niels, Frank...) Tekst3 er Beskeden som du vil sende til din ven
Winsock1.Connect \'her forsøger vi så at få kontakt
Do Until Winsock1.State = sckConnected DoEvents: DoEvents: DoEvents: DoEvents \'Denne loop procedure calder den anden computer op. Hvis computeren af en eller anden grund ikke svarer står den bare og kører i hak og låser computeren. Så her skal du nok tilføje lidt kode som løser det problem. Loop
Winsock1.SendData (txtMessage.Text) \'Her sender vi så dataen
Winsock1.Close \'og her lukker vi så forbindelsen
<b>RemoteHost</b> er enten din vens computer navn eller en ip adresse.
<b>RemotePort</b> er så ip adressen du vil tilslutte dig til.
Jeg fandt den i mine arkiver (har sikker fået den et eller andet sted fra) Dette skulle gøre hvad du har brug for.
Private Sub Form_Load()
On Error GoTo PortErr
\' Listen out for any possible connection \' requests or data, etc.
Winsock1.LocalPort = 202 Winsock1.Listen
\' This uses port 201. To work, this program \' must be run on two separate computers \' - otherwise there will be a conflict with \' two programs trying to access port 201
Exit Sub
PortErr:
MsgBox \"Another program is using port 201. This \" & _ \"may be because you\'re running another copy \" & _ \"of this program on the same computer. \" & _ \"Unfortunately, this only works over a real \" & _ \"network, either an office setup or the Internet. \" & _ \"When two computers try to \'listen in\' to the same \" & _ \"part of a computer, one of them receives an error. \" & _ \"I am alas the unlucky soul. Sorry! Here\'s an idea \" & _ \"though - alter my Form_Load source code, changing the \" & _ \"LocalPort property to 202 instead of 201. This should \" & _ \"allow you to test both programs on the same machine!\", vbCritical
End
End Sub
Private Sub cmdSendMessage_Click()
If Winsock1.State = sckConnected Then
\'If connected, just send the data
Winsock1.SendData (txtOutgoingMessage.Text)
Else
If MsgBox(\"You are not connected. \" & _ \"Connect to \" & txtAddress.Text & \"?\", _ vbYesNo + vbQuestion) = vbYes Then
Do Until Winsock1.State = sckConnected DoEvents: DoEvents: DoEvents: DoEvents If Winsock1.State = sckError Then MsgBox \"Problem connecting!\" Exit Sub End If Loop
\'Send the data
Winsock1.SendData (txtOutgoingMessage)
Else
Call MsgBox(\"OK - not connected!\", vbInformation)
End If
End If
End Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
\'Accept an incoming connection request
If Winsock1.State <> sckClosed Then Winsock1.Close Winsock1.Accept requestID
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
\'Display incoming data
Dim strIncoming As String Winsock1.GetData strIncoming txtIncomingMessage.Text = strIncoming
nu har jeg/vi afprøvet det og det virker ikke, (problem connection), kan du ikke forklare hvordan man skal sætte det op, altså skal vi begge havde hinandens ip\'er for at sende eller hvad?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.