Rubrik: HTML/Internet/Netzwerk · Winsock | VB-Versionen: VB4, VB5, VB6 | 22.10.02 |
Datenaustausch über Winsock (UDP) Ein Beispiel, das zeigt, wie sich Daten über das Winsock-Control mit dem UDP-Protokoll versenden und empfangen lassen. | ||
Autor: Nino Raubaum | Bewertung: | Views: 55.206 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Vor kurzem haben wir Ihnen ein Beispiel gezeigt, wie sich mit dem Winsock-Control Daten über das TCP/IP-Protokoll versenden und empfangen lassen. Das Winsock-Control unterstützt aber auch das UDP-Protokoll. Und wie sich Daten über das UDP-Protokoll austauschen lassen, erfahren Sie nachfolgend.
Wieder werden zwei Programme benötigt. Aber diesmal gibt es keinen Server oder Client, denn beim UTP-Verfahren muss keiner der beiden Programme als erstes eine Verbindung aufbauen, bevor man Daten senden oder empfangen kann.
Das ist wahrscheinlich auch der Hauptgrund, warum UTP ein nicht gerade sichers Verfahren ist, um Daten auszutauschen, denn:
- Der Sender braucht keine Erlaubnis, um die Daten zum Empfänger zu senden und
- Es gibt keine Bestätigung, ob die Daten auch wirklich angekommen sind.
Beim UTP-Verfahren muss folgende Informationen bekannt sein, ehe man einen Sendevorgang starten kann:
- An welchen Computer sollen die Daten versandt werden?
- Welcher Port soll verwendet werden?
Der Server / Client....
Erstellen Sie ein neues Projekt und fügen Sie die Winsock-Komponent über Projekt - Komponenten (Microsoft Winsock Control) ein. Ziehen Sie nun das Winsock-Control auf die Form und stellen Sie in den Eigenschaften das Protokoll auf UTP. Platzieren Sie weiterhin einen Command-Button (cmdSend) auf die Form, sowie eine MultiLine-TextBox (txtMessage), um empfangene Daten anzuzeigen. Zu guter Schluß wird noch eine weitere "normale" TextBox (txtIP) benötigt, um den Computername bzw. die IP-Adresse des Empfängers einzugeben.
Option Explicit Private Sub Form_Load() Dim nPort As Integer Dim sOwnIP As String ' UDP-Protokoll einstellen Winsock1.Protocol = sckUDPProtocol ' Port, der überwacht werden soll nPort = 12345 ' Eigene IP ermitteln sOwnIP = Winsock1.LocalIP ' Port an die IP "binden" Winsock1.Bind nPort, sOwnIP End Sub
' Daten senden Private Sub cmdSend_Click() ' Wurde kein Empfänger/IP eingegeben ' darf nicht gesendet werden If txtIP.Text = "" Then MsgBox "Bevor Sie senden, müssen Sie den Namen oder " & _ "die IP des Empfängers eingeben!" Else ' Fehlerbehandlung aktivieren On Error Goto Err_Handler With Winsock1 ' Portnummer, an der die Daten gesendet ' werden sollen .RemotePort = 12345 ' Name bzw. IP des Empfängers .RemoteHost = txtIP.Text ' Daten senden .SendData "Hallo Empfänger!" End With End If On Error Goto 0 Exit Sub Err_Handler: MsgBox "Fehler: " & Err.Number & vbCrLf & _ Err.Description End Sub
' Wenn Daten ankommen... Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim sData As String ' Die ankommenden Daten werden in einer Variable ' (sDaten) gespeichert... Winsock1.GetData sData ' ... und in einer MutliLine-TextBox ausgegeben With txtMessage .SelStart = Len(.Text) .SelText = sData End With End Sub
Exakt das gleich Programm wird nun als Empfänger verwendet!
Kopieren Sie das Programm auf 2 unterschiedlichen PCs in Ihrem LAN und starten es. Geben Sie anschließend den Rechnernamen bzw. die IP-Adresse des Empfängers in die TextBox txtIP ein und klicken auf den Button cmdSend.
Jetzt sollte auf dem zweiten Rechner die Nachricht Hallo Empfänger erscheinen.