Home - Programmieren - Visual Basic - Programmierung eines simplen TCP-Chats in VB
Hinweis: Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich. Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren. [Druckansicht] [Als E-Mail senden] [Kommentar verfassen] Einleitung Dieser Artikel zeigt, wie Sie mit VB ein einfaches Programm für die Netzwerkkommunikation über TCP mit Hilfe des Winsock-Steuerelements schreiben können. Vorraussetzung hierfür ist allerdings, dass Sie mindestens über die Professional Edition von Visual Basic 6 verfügen, da in der Standard Edition das Winsock-Steuerelement noch nicht vorhanden ist. Wird TCP für die Kommunikation zwischen einzelnen PCs benutzt, so heißt dies, dass es zumindest einen Server und einen oder mehrere Clients geben muss. Im folgenden müssen deshalb zwei kleine Visual Basic Programme entworfen werden, einmal eines für den Client und eins für den Server. Einfügen von Winsock in die Entwicklungsumgebung Standardmäßig ist das Winsock-Steuerelement nicht in der Werkzeugleiste von Visual Basic zu sehen. Damit das benötigte Steuerelement dort hinzugefügt wird und Ihnen für die weiteren Programmierarbeiten zur Verfügung steht, klicken Sie auf Projekt | Komponenten… und wählen Sie im erscheinenden Dialog den Listeneintrag Microsoft Winsock Control 6.0 aus. ![]() Als Ergebnis erscheint ein kleines Symbol für das hinzugefügte Winsock-Steuerelement in der Werkzeugleiste. ![]() Der Server Der Server ist dafür zuständig Verbindungsanfragen, die von den Clients kommen zu prüfen und anzunehmen. Für die Kommunikation mit dem Client wird in diesem Beispielprojekt der Port 1111 benutzt. Über die Listen-Methode des Winsock-Steuerelements wird der Server aktiviert. Bauen Sie ein Formular gemäß der nachfolgenden Abbildung auf und speichern Sie das Projekt unter dem Dateinamen prjServer.vbp sowie frmServer.frm. ![]() Stellen Sie die Eigenschaft Multiline von txtOutput auf True. Bereits beim Laden der Anwendung muss der Port 1111 geöffnet und der TCP-Server aktiviert werden, damit der Client später eine Verbindung herstellen kann. Daher schreiben wir in das Form_Load-Ereignis folgenden Quelltext:
Damit wäre die Initialisierung auch schon abgeschlossen. Der Server wartet nun auf die Verbindungsanfrage eines Clients. Diese wird im ConnectionRequest-Ereignis des Winsock-Controls behandelt.
Zuerst stellen wir fest, ob schon eine Verbindung besteht. Falls dies zutrifft, schließen wir die aktuelle Verbindung. Indem wir der Accept-Methode die Variable requestID übergeben, stellen wir eine neue Verbindung zum entsprechenden Client her. Wurde die Verbindung erfolgreich aufgebaut, so kann der Client nun Daten an den Server senden. Werden Daten vom Winsock-Steuerelement empfangen, wird das Ereignis DataArrival ausgelöst. Dort können nun die empfangenen Daten wieder ausgelesen werden und dem entsprechenden Ausgabefeld hinzugefügt werden.
Gleichzeitig kann der Server nicht nur Daten empfangen, sondern selbst auch Daten an den Client versenden. Wenn im Eingabefeld die Return-Taste gedrückt wird, so wird die Nachricht an den Client verschickt und dem Ausgabefeld hinzugefügt.
Zuerst wird auch hier geprüft, ob überhaupt eine Verbindung besteht. Zusätzlich muss noch die Return-Taste (KeyCode = 13) gedrückt worden sein, damit die Nachricht über die SendData-Methode verschickt werden kann. Danach wird der Rechnername und der geschriebene Text dem Ausgabefenster hinzugefügt, ähnlich wie man das von ICQ her kennt. Zum Schluss wird das Eingabefeld wieder zurückgesetzt. Damit ist die Programmierung des Servers abgeschlossen. Der Client Der Client ist dafür zuständig eine Verbindung zum Server aufzubauen. Meist ist es auch der Client, der die Verbindung nach getaner Arbeit wieder schließt. Der Aufbau des Clients ähnelt stark dem des Servers, da wir für die Verbindung zum Server keine eigene Schaltfläche einbauen, sondern beim Start des Programms automatisch eine Verbindung zum Server hergestellt wird. Dies setzt voraus, dass bei späterer Nutzung des Programms der Server schon aktiv sein muss, wenn der Client gestartet wird. Aber dazu später mehr. Der Aufbau des Programms ist vom Aussehen her der gleiche wie beim Serverprogramm, nur lautet die Beschriftung der Titelleiste nun Client, damit man beim späteren Test nachvollziehen kann, welches Programm wo läuft: ![]() Speichern Sie das Projekt unter dem Namen prjClient.vbp und frmClient.frm. Einige Teile des Codes vom Serverprogramm können wir für den Client weiterverwenden.
Für die Verbindungsherstellung zum Server müssen wir uns allerdings eine andere Lösung einfallen lassen, denn der Client ist dafür zuständig eine Verbindungsanfrage an den Server zu senden. Dies erledigt die Connect-Methode des Winsock-Steuerelements für uns.
Um eine Verbindung zum Serverprogramm aufbauen zu können, muss der Rechnername des Computers auf dem der Server läuft bekannt sein. Dieser wird hier mit einer einfachen InputBox abgefragt. Wird das Fenster des Clients geschlossen, so muss die Verbindung zum Server getrennt werden. Dies geschieht durch den Aufruf der Close-Methode des Winsock-Steuerelements.
Test Da wir sowohl die Programmierung des Servers als auch des Clients abgeschlossen haben, erfolgt nun der Test, ob alles einwandfrei funktioniert. Dafür benötigen Sie noch nicht mal zwei Computer, denn eine TCP-Verbindung kann auch auf einem Rechner aufgebaut werden. Beachten Sie, dass Sie auf jeden Fall zunächst das Serverprogramm starten müssen und erst danach der Client gestartet werden kann. Schreiben Sie auf beiden Seiten ein paar Zeilen und Sie werde merken, dass das Ganze einem Chatprogramm wie ICQ schon recht ähnlich ist, obwohl es noch sehr viele Erweiterungsmöglichkeiten gibt. Wie Sie das Programm erweitern bleibt Ihnen überlassen. ![]() Zusammenfassung In diesem Artikel haben Sie gelernt, wie Sie
|
![]() ![]() ![]()
Autoren:04516
Artikel:00815 Glossar:04116 News:13565 Userbeiträge:16552 Queueeinträge:06254 ![]()
Projektsteuerung statt Anwesenheitskontrolle
MONDroid - your monitoring Solution for Android with PRTG-Support Red-Hosting jetzt mit erweitertem Shop-Webhosting-Angebot [Mehr News] ![]()
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
|