Hallo Anno74,
leider wird mir aus Deinem Programm nicht wirklich klar, wozu welches Steuerelement dient und welche Funktion es wahrnehmen soll.
In der normalen VB-Hilfe findet sich nachfolgende Beispiel-Anwendung zum Winsock-Steuerelement.
Eventuell kannst Du ja erst einmal diese Beispiel-Anwendung zum Laufen bringen und anschliessend Deinen Bedürfnissen anpassen.
Gruss
Thomas
So erstellen Sie einen TCP-Server
Erstellen Sie ein neues Standard-EXE-Projekt.
Ändern Sie den Namen des Standardformulars in ?frmServer?.
Ändern Sie die Beschriftung des Formulars in ?TCP-Server?.
Zeichnen Sie ein Winsock-Steuerelement auf dem Formular, und ändern Sie dessen Namen in ?tcpServer?.
Fügen Sie zwei Textfeld-Steuerelemente (TextBox) zum Formular hinzu. Nennen Sie das erste ?txtSendData? und das zweite ?txtOutput?.
Fügen Sie den folgenden Code zum Formular hinzu.
Private Sub Form_Load()
’ Die LocalPort-Eigenschaft auf eine ganze
’ Zahl setzen. Dann die Listen-Methode aufrufen.
tcpServer.LocalPort = 1001
tcpServer.Listen
frmClient.Show ’ Das Client-Formular anzeigen.
End Sub
Private Sub tcpServer_ConnectionRequest _
(ByVal requestID As Long)
’ Prüfen, ob die State-Eigenschaft des
’ Steuerelements den Wert Closed (geschlossen)
’ hat. Falls nicht, die Verbindung schließen,
’ bevor die neue Verbindung akzeptiert wird.
If tcpServer.State sckClosed Then _
tcpServer.Close
’ Die Anforderung mit dem Parameter
’ requestID akzeptieren.
tcpServer.Accept requestID
End Sub
Private Sub txtSendData_Change()
’ Das Textfeld-Steuerelement namens txtSendData
’ enthält die zu sendenden Daten. Wenn der
’ Benutzer im Textfeld eine Eingabe macht, wird
’ die Zeichenfolge mit Hilfe der SendData-Methode
’ gesendet.
tcpServer.SendData txtSendData.Text
End Sub
Private Sub tcpServer_DataArrival _
(ByVal bytesTotal As Long)
’ Eine Variable für die eingehenden Daten deklarieren.
’ Die GetData-Methode aufrufen, und die
’ Text-Eigenschaft eines Textfelds namens
’ txtOutput mit den Daten belegen.
Dim strData As String
tcpServer.GetData strData
txtOutput.Text = strData
End Sub
Diese Prozedur erstellt eine einfache Server-Anwendung. Um das Szenario zu vervollständigen, müssen Sie jedoch auch eine Client-Anwendung erstellen.
So erstellen Sie einen TCP-Client
Fügen Sie zum Projekt ein neues Formular hinzu, und nennen Sie es ?frmClient?.
Ändern Sie die Beschriftung des Formulars in ?TCP-Client?.
Fügen Sie ein Winsock-Steuerelement zum Formular hinzu, und nennen Sie es ?tcpClient?.
Fügen Sie zwei Textfeld-Steuerelemente zum Formular hinzu. Nennen Sie das erste ?txtSend? und das zweite ?txtOutput?.
Zeichenen Sie ein Befehlsschaltfläche-Steuerelement (CommandButton) auf dem Formular, und nennen Sie es ?cmdConnect?.
Ändern Sie die Aufschrift des Befehlsschaltfläche-Steuerelements in ?Verbinden?.
Fügen Sie den folgenden Code zum Formular hinzu.
Wichtig Vergessen Sie nicht, den Wert der RemoteHost-Eigenschaft auf den Computernamen Ihres Computers zu setzen.
Private Sub Form_Load()
’ Das Winsock-Steuerelements heißt tcpClient.
’ Hinweis: um einen Remote-Host anzugeben,
’ können Sie die IP-Adresse (z.B. „121.111.1.1“)
’ oder den Computernamen des Computers
’ verwenden, wie hier gezeigt.
tcpClient.RemoteHost = „RemoteComputerName“
tcpClient.RemotePort = 1001
End Sub
Private Sub cmdConnect_Click()
’ Die Connect-Methode aufrufen, um einen
’ Verbindungsaufbau zu initiieren.
tcpClient.Connect
End Sub
Private Sub txtSendData_Change()
tcpClient.SendData txtSend.Text
End Sub
Private Sub tcpClient_DataArrival _
(ByVal bytesTotal As Long)
Dim strData As String
tcpClient.GetData strData
txtOutput.Text = strData
End Sub
Dieser Code erstellt eine einfache Client/Server-Anwendung. Um die beiden zusammen zu testen, führen Sie das Projekt aus, und klicken Sie auf ?Verbinden?. Geben Sie anschließend Text in das Textfeld txtSendData auf jedem Formular ein, und derselbe Text wird im Textfeld txtOutput des jeweils anderen Formulars angezeigt.