vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: HTML/Internet/Netzwerk · Winsock   |   VB-Versionen: VB4, VB5, VB630.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 RaubaumBewertung:  Views:  107.341 
ohne HomepageSystem:  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

  1. Starten Sie den Server. Der CommandButton ist zunächst deaktiviert.
  2. Starten Sie jetzt zusätzlich den Client. Der CommandButton wird sofort aktiviert, da der Client die Verbindung zum Server bereits aufgebaut hat.
  3. Wechseln Sie zum Server - und siehe da - auch hier ist der CommandButton jetzt aktiv, d.h. der Server kann Daten vom Client empfangen.
  4. Aktivieren Sie den Clienten und klicken auf den CommandButton.
  5. Wenn Sie jetzt zur Server-Anwendung wechseln sollte folgender Text in der TextBox stehen: Hallo Server.
  6. Wird der Server beendet, bekommt dies der Client mitgeteilt und der CommandButton wird wieder inaktiv.
  7. Das ganze natürlich auch umgekehrt.



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.