CCZwei

Aktuelles

Allgemeines

Priv@tes

Unterhaltung

Lallus

Visual Basic

PDA/PPC2002

Navigation

Mischmasch

Chat / Webcam

 

| impressum | feedback | gästebuch | home |  

 

Ich habe in meinen Texten immer davon gesprochen, dass es recht einfach ist, eine Internetverbindung zu realisieren. Ein paar Zeilen Programmcode sollen dies bewerkstelligen. Hier will ich an einem Beispielprogramm zeigen, dass es wirklich einfach ist, wenn man die Winsock Control zur Hilfe nimmt. Hier sind einige Funktionen bereits vorgefertigt.

Um es vorwegzusagen: diese beiden beschriebenen Programme sind wirklich nur Demoprogramme und haben lediglich die notwendigen Grundfunktionen eingebaut, die für eine Kommunikation notwendig sind.

Zunächst einmal beide Programme in Funktion:
oben der Server und als zweites Bild der Client.

Beginnen wir mit der Entwicklung des Servers. Wir benötigen lediglich eine Textbox, deren Eigenschaft auf Multiline gestellt wird. Und dann müssen zwei Winsock - Controls geladen werden. Das Programm in der Entwicklung ist unten zu sehen.

Bei der Darstellung des Programmcodes wird es ersichtlich, dass es wirklich kein Kunstwerk ist. Und dennoch stellt dieses kleine Programm schon einen kompletten Server dar. Natürlich fehlen jegliche Feinheiten, die später eingebaut werden können.

Private Sub Form_Load()
Winsock1.LocalPort = 1001
Winsock1.Listen
End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Winsock2.LocalPort = 1001
Winsock2.Accept requestID
Caption = "connected"
End Sub

Private Sub Winsock2_DataArrival(ByVal bytesTotal As Long)
Dim data As String
Winsock2.GetData data
Text1 = data
Winsock2.SendData data
End Sub

Was passiert nun in diesem Programm? Wird das Programm hochgefahren, so wird zuerst Sub Form_Load durchlaufen. Hier wird der ersten Winsock - Control mitgeteilt, dass wir den Port 1001 nutzen wollen. Dieser Port wird bei den meisten Chats benutzt.

Die Winsock erhält weiterhin den Auftrag, die Leitung zu beobachten, zu listen (hören). Wenn sich hier etwas tut,z.B. eine Anforderung vom Clienten, so wird das Event Winsock1_ConnectionRequest aktiviert.

Hier wird jetzt der zweiten Winsock - Control auf ihre Aufgabe vorbereitet. Zum einen wird ihr der gleiche Port 1001 zugewiesen. Zum anderen nimmt sie die Anforderung des Clienten an und akzeptiert die Verbindung zum Clienten. In der Ereignisprozedur wird eine Variable requestID mitgeliefert. Diese wird zur Kennung der Verbindung eingegeben.

Jetzt ist der Server mit dem Client verbunden und die Datenkommunikation kann stattfinden. Werden Daten empfangen, so wird das Ereignis Winsock2_DataArrival(ByVal bytesTotal As Long) aufgerufen. Jetzt ist es einfach, die Daten abzuholen. Nachdem die Variable data als string dimensioniert wurde, kann sie jetzt über den Befehl Winsock2.GetData data eingelesen werden und in der Textbox dargestellt werden.

Da der Server als Echomaschine programmiert wurde, sendet er selbst jetzt an den Clienten die empfangenen Daten mit Winsock2.SendData data zurück.

Das wärs dann schon mit dem Server. Ähnlich einfach gibt sich der Client. Unten das Programm in der Entwicklungsumgebung. Hier wird lediglich eine Winsock Control und zwei Textboxen benötigt. Die eine zeigt die Meldungen des Servers an und die zweite Box dient zur Eingabe des eiegenen Textes.

Der benötigte Programmieraufwand ist ähnlich gering wie der Serverapplikation. Die Aufrufe sind ähnlich und nahezu selbstredend.

Private Sub Form_Load()
Caption = Winsock1.LocalIP
Winsock1.RemoteHost = winsock1.LocalIP 'IP des Servers
Winsock1.RemotePort = 1001 'Port zum Verbinden
Winsock1.Connect
End Sub

Private Sub Text2_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Winsock1.SendData Text2.Text + vbCrLf
Text2 = ""
End If
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim data As String
Winsock1.GetData data
Text1 = Text1 + data
End Sub

Wir beginnen wieder mit dem Sub Form_Load . Zunächst muss der Control die IP-Adresse des Servers mitgeteilt werden. Da diese Programme dafür gedacht sind, auf dem eigenen Rechner als Demo zu laufen, wird die eigene IP-Adresse eingesetzt. Die eigene IP-Adresse erhält man mit Winsock1.LocalIP. Diese wird dann der Control über Winsock1.RemoteHost = winsock1.LocalIP mitgeteilt. Ebenso wird der gleiche Port gewählt, der zur Kommunikation dienen soll: Winsock1.RemotePort = 1001

Und schließlich kommt der wichtigste Teil: die Control wird aufgefordert, die Verbindung zum Server herzustellen: Winsock1.Connect . Damit wären die Vorbereitungen bei dem Clientprogramm abgeschlossen und die Datenkommunikation kann beginnen.

Sie wird in der gleichen Weise durchgeführt, wie oben beim Server beschrieben. Die selbst eingetippten Daten werden über Winsock1.SendData Text2.Text + vbCrLf dem Server zugeleitet. Das vbCrLF am Ende nach dem Text bedeuetet, dass ein Carriage Return + LineFeed (Zeilenvorschub) mitgesendet wird, damit im Anzeigefenster des Servers auf eine neue Zeile geschaltet wird.

Wenn der Server das Echo schickt, so wird wieder die Ereignisroutine Sub Winsock1_DataArrival(ByVal bytesTotal As Long) aktiv.

Jetzt fehlen nur noch die EXE - Dateien für die, die kein Entwicklungssystem haben oder nicht programmieren können. Hinweis: Zuerst wird das Serverprogramm aufgerufen, dann der Client.

Sever_testdemo.exe als Serverprogramm (20 KB) laden

Client_testdemo.exe als Clientprogramm (20 KB) laden

Natürlich muss die Runtime für VB6 und die Winsockcontrol auf dem Rechner installiert sein. Falls sie fehlen: es gibt sie unter Chat/Webcam in meinem Programm.

 
   

   © 2003 by Wolfgang Back •  info@wolfgang-back.com