Winsock Programmierung

Vorerst einmal erkläre ich wofür ist die Winsock überhaupt und wofür braucht man diese.

Also die Winsock dient zur Datenübertragung (Internet, Netzwerk).

Als erstes muß man die Winsock einmal seinem Projekt hinzufügen, da sie nicht automatisch im Menü enthalten ist. Dies macht man über das Menü Projekt --> Komponenten... Dann bei Steuerelemente soweit runterscrollen bis Microsoft Winsock Control 6.0 erscheint. Dann ein Kreuzchen links daneben machen auf OK und schon habt Ihr ein neues Steuerelement.
Dieses Steuerelement könnt Ihr irgendwo auf eurem Formular plazieren, da es in der endgültigen exe-Datei dann unsichtbar ist.

Das erste was ich euch erklären möchte ist, mit hilfe eines kleinen Programmes meine eigene IP Adresse herauszubekommen:

1)
Zuerst zeichnet eine Commond Button und ein Label sowie eine Winsock.
2)
Nun klickt doppelt auf das Commond Button und schon seid Ihr in folgenden Code:

Private Sub Command1_Click()
Label1.Caption = Winsock1.LocalIP 'Befehl, das die Winsock die IP herrausrückt
End Sub

Vervollständigt den Code und erstellt die exe-Datei. Klickt nun auf das Button und schon seht Ihr eure IP-Nummer.
Die fertige exe gibts natürlich im meinem Download-Bereich

Hier nun die Beschreibung wie man ein kleines Chat Programm erstellt:

Dieses Chat Programm besteht aus einem Server und Client Teil!

Hier beschreibe ich zuerst den Server Teil:

Was benötigt Ihr auf eurem Formular:
2 Textboxen (mit Multiline=true und 1 mit ScrollBars 2 - Vertikal)
2 CommandButton
1 Winsock (Wird bei mir Ws genannt)
2 Label
und so sollte das ganze ca. aussehen.(Die Namen der jeweiligen Felder hab ich angeführt!)

Server

Hier nun der Code inkl. Beschreibung:

Private Sub Form_Load() 'Beim Laden des Formulars mache folgendes
Ws.LocalPort = 11222 'Setzt den Port der Winsock
Ws.Close 'Den Port frei machen
Ws.Listen 'Wartet auf Verbindung
End Sub

Private Sub ws_ConnectionRequest(ByVal requestID As Long)
If Ws.State <> sckClosed Then Ws.Close 'Wenn Port besetzt mach ihn frei
Ws.Accept requestID 'Akzeptiere die Verbindung
End Sub

Private Sub cmdSende_Click()
Ws.SendData txtTextgeht.Text 'Sende was im Textfeld steht.
End Sub

Private Sub Ws_DataArrival(ByVal bytesTotal As Long)
Dim Daten As String 'Die Variable Daten wird als String definiert
Ws.GetData Daten 'Die ankommenden Daten werden in der Variable Daten gespeichert
txtTextkommt.SelText = Daten & vbCrLf 'schreibe nun die Daten aus der Variable ins Textfeld,
End Sub 'scrolle mit wenn kein Platz mehr und beginne bei jeder neuen Nachricht eine neue Zeile.

Die weiteren Funktionen sind eigentlich nicht mehr notwendig, ich hab sie aber trotzdem noch gemacht.

Private Sub txtTextgeht_Click() 'Bei Klick ins Textfeld für abgehenden Nachrichten mache:
txtTextgeht.Text = "" 'Lösche Text
End Sub

Private Sub txtTextkommt_Click() 'Bei Klick ins Textfeld für ankommende Nachrichten mach:
MsgBox "Hier kannst du nicht klicken", vbInformation, "Info.." 'siehe MsgBoxen
End Sub

Und das kennt Ihr schon! (s.o)

Private Sub cmdIP_Click()
lbIP.Caption = "Deine IP ist:" & Ws.LocalIP
End Sub

Hier folgt nun der Client Teil (Die genaue Beschreibung folgt)

Der Client sollte in etwa so aussehen:

Client

Private Sub cmdIP_Click()
lbIP.Caption = "Deine IP " & ws.LocalIP
End Sub

Private Sub cmdSende_Click()
ws.SendData txtSende.Text
End Sub

Private Sub cmdVerbinde_Click()
ws.Close
ws.Connect txtIP.Text, 11222
End Sub

Private Sub txtSende_Click()
txtSende = ""
End Sub

Private Sub
ws_Close()
lbStatus.Caption = "Nicht Verbunden"
End Sub

Private Sub ws_Connect()
lbStatus.Caption = "Verbunden"
End Sub

Private Sub ws_DataArrival(ByVal bytesTotal As Long)
Dim Daten As String
ws.GetData Daten
txtTextKommt.SelText = Daten & vbCrLf
End Sub

Private Sub ws_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)
ws.Close
lbStatus.Caption = "Nicht Verbunden"
End Sub

Auch hierfür gibts die fertige exe zum Downladen im Download-Bereich