
Geschrieben von
gix
am 12.04.2007 um 00:00 Uhr.
Beiträge: 185 /
#1205
Kontakt:
Mailen
|
ICQ
Um eine Socketverbindung aufbauen zu können, müssen wir die Microsoft Winsock Control (6.0) verwenden.
Wenn diese bei euch in der Werkzeugleiste noch nicht angezeigt wird, geht ihr über:
Projekt -> Komponenten zur Komponentenauswahl und sucht nach "Microsoft Winsock Control".
Danach erscheint in eurer Werkzeugleiste ein weiteres Symbol, was ihr auch gleich in eure form mit einbinden könnt.
Ich will euch allerdings den Aufbau eures Clients euch selbst überlassen, und deswegen werde ich diesmal nicht weiter auf die Form eingehen.
Als erstes deklarieren wir 2 Konstanten, welche der Serveradresse + Port entsprechen(kann von euch angepasst werden)
Ihr könnt natürlich auch eine Konstante für euren Nickname anlegen.
Const server = "irc.webiface.org"
Const port = "6667"
Const nick = "gix"
Wir nehmen jetzt an das ihr beim Programmstart schon Connecten wollt.
Dazu müssen wir die Anweisung geben, dass das Programm nach laden der Form
die Adresse und das Port festlegt, zu der man eine Verbindung aufbaut.
Private Sub Form_Load()
ircSock.RemoteHost = server
ircSock.RemotePort = port
ircSock.connect
End Sub
Während eine Verbindung aufgebaut wird, muss man den zukünftigen Nicknamen und Usernamen an den server übermitteln. Dabei sollte man besonders auf
vbCrLf am Ende der zu sendenden Daten achten. Diese sind dafür verantwortlich, das ein Befehl gesendet wird[wie die Funktion der Entertaste]
Private Sub ircSock_Connect()
ircSock.SendData ("NICK " & nick & vbCrLf)
ircSock.SendData ("USER " & nick & " " & nick & " " & nick & " Tutorial von t4k3.de " & " " & vbCrLf)
End Sub
Nachdem eine Verbindung erfolgreich aufgebaut werden konnte, sendet der Server Daten an den Client zurück. Um diese Daten in einer Variable zu speichern und auszugeben nutzen wir folgenden Code:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Private Sub ircSock_DataArrival(ByVal bytesTotal As Long)
On Error Resume Next
Dim data As String
ircSock.GetData data
If InStr(data, "PING") = 1 Then
ircSock.SendData "PONG " & Split(data, " ")(1)
End If
If InStr(data, "376") Or InStr(data, "422") Then
ircSock.SendData "JOIN #beispiel " & vbCrLf
End If
End Sub
Zur Erklärung:
Alle Daten die ankommen, werden in dem String
data gespeichert.
IRC server haben oft einen PING PONG Event. D.h. der Server sendet daten und will spezielle daten zurück bekommen.(Sendet er zb.: Ping 91292387 - möchte er: Pong 91292387 als antwort bekommen)
Falls dieses Event vorkommt, und "
PONG" im ankommenden String vorhanden ist, wird Pong und die entsprechende Zahl gesendet(dazu wird auf die
Split()-Funktion zurückgegriffen).
Falls nun noch der RAW-CODE
376 oder
422 im String vorkommt, bedeutet die's das die MotD(Message of the Day) am Ende angekommen ist, oder fehlt.
Ist die's der Fall, können neue Daten an den server Gesendet werden. In diesem Fall
soll der Channel "#beispiel" betreten werden.
Wenn ihr die Socketverbindung beenden wollt könnt ihr folgende Zeile benutzen
Ich hoffe ich konnte euch einen kleinen Einblick geben, wie man mit Sockets arbeiten kann.
Sollten dennoch Fragen oder Probleme auftreten, stehe ich gern zur verfügung