Rubrik: HTML/Internet/Netzwerk · Winsock | VB-Versionen: VB4, VB5, VB6 | 10.09.02 |
Simpler Chat via Winsock-Control Dieses Beispiel zeigt die Grundarbeitsweise eine Chatprogramms auf Basis von Winsock-Controls. | ||
Autor: Markus Stapf | Bewertung: | Views: 30.534 |
stormguard.de.vu | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Das nachfolgende Beispiel zeigt die grundsätzliche Vorgehensweise für die Programmierung eines simplen Chat-Programms in Visual Basic via Winsock-Controls.
Folgende Steuerelemente werden benötigt:
WSockServer (WinSock-Control)
WSockClient (WinSock-Control)
txtConnectTo (Textbox-Control)
txtMessage (Textbox-Control)
lstChat (Listbox-Control)
cmdConnect (Command-Control)
cmdSend (Command-Control)
Plazieren Sie diese Elemente auf die Form, in etwa so:
Setzen Sie für WSockServer zusätzlich die Eigenschaft Index = 0.
Verwendung der einzelnen Objekte:
WSockClient: zum Versenden der Daten
WSockServer(0): zum Empfangen der Daten
txtConnectTo: zum Eintragen der IP
txtMessage: der Text, der versendet werden soll
lstChat: für die empfangenen Nachrichten
cmdConnect: zum Aufbauen der Verbindung
cmdSend: zum Versenden der Nachricht
Und hier der hinterlegte Quellcode
' Winsock initialisieren Private Sub Form_Load() With WSockServer(0) .Close .LocalPort = 1234 .Listen End With End Sub
' Verbinden Private Sub cmdConnect_Click() On Error Resume Next WSockClient.Connect txtConnectTo.Text, 1234 End Sub
' Verbindungsanforderung Private Sub WSockServer_ConnectionRequest(Index As Integer, _ ByVal requestID As Long) Load WSockServer(1) WSockServer(1).LocalPort = 0 WSockServer(1).Accept requestID End Sub ' Daten werden empfangen Private Sub WSockServer_DataArrival(Index As Integer, _ ByVal bytesTotal As Long) Dim sNachricht As String WSockServer(1).GetData sNachricht lstChat.AddItem "Client: " & sNachricht End Sub ' Winsock-Fehler (Empfangen) Private Sub WSockServer_Error(Index As Integer, _ ByVal Number As Integer, Description As String, _ ByVal Scode As Long, ByVal Source As String, _ ByVal HelpFile As String, ByVal HelpContext As Long, _ CancelDisplay As Boolean) On Error Resume Next MsgBox "Fehler: " & Description CancelDisplay = True End Sub
' Nachricht senden Private Sub cmdSend_lick() WSockClient.SendData txtMessage.Text lstChat.AddItem "Server: " & txtMessage.Text End Sub
' Winsock-Fehler (Senden) Private Sub WSockClient_Error(ByVal Number As Integer, _ Description As String, ByVal Scode As Long, _ ByVal Source As String, ByVal HelpFile As String, _ ByVal HelpContext As Long, CancelDisplay As Boolean) On Error Resume Next MsgBox "Fehler: " & Description CancelDisplay = True End Sub
Natürlich ist das ganze noch nicht perfekt, aber auf diesen Code kann man aufbauen, denn er dient als Kern! Man kann noch eine freie Portwahl einbauen, oder die Verbindung wieder trennen, weitere Infos vom Server bzw. Client erfahren, oder Statusanzeigen einbauen ... und natürlich vieles mehr