Rubrik: HTML/Internet/Netzwerk · Winsock | VB-Versionen: VB4, VB5, VB6 | 30.09.02 |
Datenaustausch über Winsock (TCP/IP) Mit diesem Tip wird demonstriert wie man mit Winsock Daten von einem Computer zum anderen Sendet über dem TCP/IP Protokoll. | ||
Autor: Nino Raubaum | Bewertung: | Views: 107.341 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Häufig wird im Diskussionsforum gefragt, wie man mit der Winsock-Komponente Daten von einem Computer zu einem anderen Computer sendet und auch empfängt. Zuerst eine kleine Einführung:
Man benötigt zwei Programme:
- ein Server-Programm
- und einen Client
Server:
Wenn das Server-Programm gestarted wird, macht dieses nichts anderes als einen Port abzuhören. Wenn dann eine Anfrage für eine Verbindung an diesen Port gesendet wird, eröffent der Server eine direkte Verbindung zur Gegenstelle und ist somit fähig, Daten zu senden und zu empfange.
Client:
Der Client versucht zunächst eine Verbindung zum Server aufzubauen. Wenn der Server das zulässt, kann der Client Daten zum Server senden oder auch Daten vom Server empfangen.
Für diese Vorgehensweise verwenden wir das TCP/IP-Protokoll des Winsock-Controls.
Der Server...
Erstellen Sie ein neues Projekt und fügen zunächst die Winsock-Komponente hinzu (Projekt - Komponenten - Microsoft Winsock Control). Nun ziehen Sie die Komponent auf die Form. Benötigt wird weiterhin noch ein Command-Button (Command1), sowie eine MultiLine-TextBox, in der die empfangenen Daten angezeigt werden.Und hier der Codeteil unseres Server-Projekts:
Option Explicit Private Sub Form_Load() ' Command1 deaktivieren Command1.Enabled = False ' Port 12345 soll abgehört werden Winsock1.LocalPort = 12345 ' Abhör-Vorgang starten Winsock1.Listen End Sub
' Wenn ein Computer versucht eine Verbindung mit dem ' Server aufzubauen Private Sub Winsock1_ConnectionRequest( _ ByVal requestID As Long) ' Das Abhören wird beendet Winsock1.Close ' Die Verbindung wird akzeptiert Winsock1.Accept requestID ' Command1 anschalten damit man die Nachricht ' senden kann Command1.Enabled = True End Sub
' Wenn Daten ankommen Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim sData As String ' Die ankommenden Daten werden in einer Variable ' (strDaten) gespeichert Winsock1.GetData sData ' Und in einer MutliLine-TextBox ausgegeben With txtMsg .SelStart = Len(.Text) .SelText = sData End With End Sub
Private Sub Command1_Click() ' Nachricht wird zum Client gesendet Winsock1.SendData "Hallo Client!" End Sub
' Wenn die Verbindundung getrennt wird Private Sub Winsock1_Close() ' Command1 ausschalten Command1.Enabled = False End Sub
Und nun zum Client...
Starten Sie eine neue Instanz der VB-IDE und erstellen ein weiteres Projekt. Auch hier wird wieder das Winsock-Control benötigt (Projekt - Komponenten - Microsoft Winsock Control). Ziehen Sie dieses auf die Form und zusätzlich noch einen Command-Button (Command1).Der Codeteil des Clients sieht wie folgt aus:
Option Explicit Private Sub Form_Load() Dim ServerIP As String ' Command1 deaktivieren Command1.Enabled = False ' Die IP-Adresse oder Computer-Name des Servers ServerIP = "MyComputer" ' 1. Parameter: Computername /-ip ' 2. Parameter: Portnummer Winsock1.Connect ServerIP, 12345 End Sub
' Wenn eine direkte Verbindung aufgebaut ist Private Sub Winsock1_Connect() ' Jezt können wir mit dem Button die Nachricht senden Command1.Enabled = True End Sub
Private Sub Command1_Click() ' Nachricht an Server senden Winsock1.SendData "Hallo Server!" End Sub
' Wenn die Verbindung geschlossen wird Private Sub Winsock1_Close() ' Ohne Verbindung kann man auch keine ' Nachrichten senden: Button Aus Command1.Enabled = False End Sub
Testen von Client und Server
- Starten Sie den Server. Der CommandButton ist zunächst deaktiviert.
- Starten Sie jetzt zusätzlich den Client. Der CommandButton wird sofort aktiviert, da der Client die Verbindung zum Server bereits aufgebaut hat.
- Wechseln Sie zum Server - und siehe da - auch hier ist der CommandButton jetzt aktiv, d.h. der Server kann Daten vom Client empfangen.
- Aktivieren Sie den Clienten und klicken auf den CommandButton.
- Wenn Sie jetzt zur Server-Anwendung wechseln sollte folgender Text in der TextBox stehen: Hallo Server.
- Wird der Server beendet, bekommt dies der Client mitgeteilt und der CommandButton wird wieder inaktiv.
- Das ganze natürlich auch umgekehrt.