[B2D] IRC-Network mit BB
Übersicht

![]() |
DABetreff: [B2D] IRC-Network mit BB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Moin,
hier mal eine kleine Einführung wie man sich z.B. mit dem Blitzed-Server verbindet und auch verschiedene Features benutzen kann. Also als erstes müssen wir uns per TCP mit dem Server verbinden und zur Übersicht die wichtigsten Variablen global machen. Das müsste ja allen bekannt sein. ![]() Code: [AUSKLAPPEN] Seedrnd Millisecs() Global IRC_stream, IRC_name$ = "BlitzBasic"+rand(1,500), IRC_port = 6667, IRC_host$ = "127.0.0.1", IRC_Server$ = "irc.blitzed.org", Channel$ function Connect(timeout=5000) ; mit IRC server verbinden IRC_stream = OpenTCPstream(IRC_Server$,IRC_port) go = Millisecs() while not IRC_stream if Millisecs()-go>timeout then return 0 wend end function So, das war jetzt zwar eigentlich schon nen bischen mehr, müsste aber egal sein. Bevor ich jedoch Anfang zu erklären noch kurz eine kleine Erläuterung: Code: [AUSKLAPPEN] IRC_host$ = "127.0.0.1" ; Das ist die IP des Computers wo man dran ist. Müsste bekannt sein. IRC_name$ = "Blitzbasic"+rand(1,500) ; Das ist der Name der für den user steht. IRC_post = 6667 ; Das ist der Port mit dem ich auf den Server zugreife. IRC_Server$ = "irc.blitzed.org" ; Das ist der Server. IRC_stream ; Die Variable wo die Connection drin gespeichert wird. Channel$ ; Dort wird der "Raum" drin gespeichert wo man gejoind ist. So. Jetzt müsste der Rest sich eigentlich von selbst erklärt haben. Wen nicht: Also, wir haben nun eine Funktion mit der wir uns mit dem IRC Server connecten und einen Ping festlegen. Falls wir z.B. noch nicht im Internet sind oder der Server ist gerade inaktiv etc. Gut, mhm, da fehlt doch was oder? Ah ja genau, wir müssen uns noch anmelden! Der code kurz vor: Code: [AUSKLAPPEN] Seedrnd Millisecs() Global IRC_stream, IRC_name$ = "BlitzBasic"+rand(1,500), IRC_port = 6667, IRC_host$ = "127.0.0.1", IRC_Server$ = "irc.blitzed.org", Channel$ function Connect(timeout=5000) ; mit IRC server verbinden IRC_stream = OpenTCPstream(IRC_Server$,IRC_port) go = Millisecs() while not IRC_stream if Millisecs()-go>timeout then return 0 wend ; Anmelden WriteLine IRC_stream, "USER " + IRC_name$ + " " + IRC_host$ + " " + IRC_Server$ + " :" + IRC_name$ WriteLine IRC_stream, "NICK " + IRC_name$ WriteLine IRC_stream, "PONG " ; Rückgabe Return 1 end function Joa. Nun haben wir auch die Anmeldung beim IRC-Server. Mhm. Was nun? Ach ja. Wie immer, code zu erst: Code: [AUSKLAPPEN] Seedrnd Millisecs() Global IRC_stream, IRC_name$ = "BlitzBasic"+rand(1,500), IRC_port = 6667, IRC_host$ = "127.0.0.1", IRC_Server$ = "irc.blitzed.org", Channel$ function Connect(timeout=5000) ; mit IRC server verbinden IRC_stream = OpenTCPstream(IRC_Server$,IRC_port) go = Millisecs() while not IRC_stream if Millisecs()-go>timeout then return 0 wend ; Anmelden WriteLine IRC_stream, "USER " + IRC_name$ + " " + IRC_host$ + " " + IRC_Server$ + " :" + IRC_name$ WriteLine IRC_stream, "NICK " + IRC_name$ WriteLine IRC_stream, "PONG " ; Rückgabe Return 1 end function function IRC_message_in$() If IRC_stream = 0 then Return 0 If Readavail(IRC_stream) then message_in$ = Readline(IRC_stream) ; Ping/Pong Wichtig! If Left$(message_in$,4) = "PING" then WriteLine IRC_stream, "PONG " + Mid$(message_in$,7,Len(message_in$)-6) If Instr(message_in$, "~") Then If Instr(message_in$, "PRIVMSG") Then pos = Instr(message_in$, "PRIVMSG") name$ = Mid(message_in$, 1, Instr(message_in$, "~")-2) name$ = Mid(name$, 2, -1) pos = Instr(message_in$, ":", pos) Return name$ + ": " + Mid(message_in$, pos+1, -1) EndIf endif Return message_in$ else Return 0 endif end Function Tjoa. Also wir warten bis im Speicher eine Nachricht ist. Wen ja, lesen wir sie aus und gucken ob in der Nachricht "Ping" steht. Das heißt der Server will von uns eine Nachricht (Pong) zurück geschickt haben, damit er weiß, dass ich (der User) noch online bin. Außerdem habe ich noch eine Funktion reingemacht mit der ich den Text auseinander nehme. Aber auch nur wen die Nachricht keine Systemnachricht ist. Gut. Jetzt haben wir eine Verbindung zum Server und können sogar auch Nachrichten empfangen. Mhm. Da fehlt doch immernoch was? Genau, wir können noch keine Nachrichten versenden! Code: [AUSKLAPPEN] Seedrnd Millisecs() Global IRC_stream, IRC_name$ = "BlitzBasic"+rand(1,500), IRC_port = 6667, IRC_host$ = "127.0.0.1", IRC_Server$ = "irc.blitzed.org", Channel$ function Connect(timeout=5000) ; mit IRC server verbinden IRC_stream = OpenTCPstream(IRC_Server$,IRC_port) go = Millisecs() while not IRC_stream if Millisecs()-go>timeout then return 0 wend ; Anmelden WriteLine IRC_stream, "USER " + IRC_name$ + " " + IRC_host$ + " " + IRC_Server$ + " :" + IRC_name$ WriteLine IRC_stream, "NICK " + IRC_name$ WriteLine IRC_stream, "PONG " ; Rückgabe Return 1 end function function IRC_message_in$() If IRC_stream = 0 then Return 0 If Readavail(IRC_stream) then message_in$ = Readline(IRC_stream) ; Ping/Pong Wichtig! If Left$(message_in$,4) = "PING" then WriteLine IRC_stream, "PONG " + Mid$(message_in$,7,Len(message_in$)-6) If Instr(message_in$, "~") Then If Instr(message_in$, "PRIVMSG") Then pos = Instr(message_in$, "PRIVMSG") name$ = Mid(message_in$, 1, Instr(message_in$, "~")-2) name$ = Mid(name$, 2, -1) pos = Instr(message_in$, ":", pos) Return name$ + ": " + Mid(message_in$, pos+1, -1) EndIf endif Return message_in$ else Return 0 endif end Function Function IRC_message_out(msg$) If Mid$(Upper$(msg$), 1, 4) = "JOIN" then Channel$ = Mid$(msg$, pos+5) WriteLine IRC_stream, msg$ else WriteLine IRC_stream, "PRIVMSG " + Channel$ + " :"+msg$ endif end function So. Nun haben wir eine Funktion mit der wir (wen kein Join am Anfang steht) etwas schreiben können. Aber auch nur wen wir vorher einem Channel gejoind sind. Geben wir aber 'Join #blitzbasic.de' z.B. ein, joinen wir einem Channel. Man muss sich Channels wie Räume vorstellen. Wo jeder User joinen und sich unterhalten kann. Wunderbar. Was jetzt noch fehlt kannst du dir wahrscheinlich schon denken. Genau, die Hauptschleife. Code: [AUSKLAPPEN] Seedrnd Millisecs() Global IRC_stream, IRC_name$ = "BlitzBasic"+rand(1,500), IRC_port = 6667, IRC_host$ = "127.0.0.1", IRC_Server$ = "irc.blitzed.org", Channel$ function Connect(timeout=5000) ; mit IRC server verbinden IRC_stream = OpenTCPstream(IRC_Server$,IRC_port) go = Millisecs() while not IRC_stream if Millisecs()-go>timeout then return 0 wend ; Anmelden WriteLine IRC_stream, "USER " + IRC_name$ + " " + IRC_host$ + " " + IRC_Server$ + " :" + IRC_name$ WriteLine IRC_stream, "NICK " + IRC_name$ WriteLine IRC_stream, "PONG " ; Rückgabe Return 1 end function function IRC_message_in$() If IRC_stream = 0 then Return 0 If Readavail(IRC_stream) then message_in$ = Readline(IRC_stream) ; Ping/Pong Wichtig! If Left$(message_in$,4) = "PING" then WriteLine IRC_stream, "PONG " + Mid$(message_in$,7,Len(message_in$)-6) If Instr(message_in$, "~") Then If Instr(message_in$, "PRIVMSG") Then pos = Instr(message_in$, "PRIVMSG") name$ = Mid(message_in$, 1, Instr(message_in$, "~")-2) name$ = Mid(name$, 2, -1) pos = Instr(message_in$, ":", pos) Return name$ + ": " + Mid(message_in$, pos+1, -1) EndIf endif Return message_in$ else Return 0 endif end Function Function IRC_message_out(msg$) If Mid$(Upper$(msg$), 1, 4) = "JOIN" then Channel$ = Mid$(msg$, pos+5) WriteLine IRC_stream, msg$ else WriteLine IRC_stream, "PRIVMSG " + Channel$ + " :"+msg$ endif end function ; Hauptschleife Graphics 800,600,16,2 Connect() While Not KeyHit(1) x$=irc_message_in$() While x$<>0 Print x$ x$=irc_message_in$() Wend If KeyHit(2) Then irc_message_out(Input(">")) Wend So. Natürlich gibs noch mehrere Funktionen für den IRC. Aber ich denke dafür reicht jetzt meine Zeit und geduld nicht mehr. ![]() Ich hoffe ich konnte jemand mit dem Tutorial helfen. PS: Herzlichen Dank an DC der mir mal ein Sample schenkte. ![]() Mfg DarkAngel [Mod]Aus Geschwindigkeitsgründen auf Code-Tag umgestellt. Gruss BladeRunner [/mod] |
||
Deutscher Blitz Basic Chat |
- Zuletzt bearbeitet von DA am Do, Jun 23, 2005 20:40, insgesamt einmal bearbeitet
![]() |
maximilian |
![]() Antworten mit Zitat ![]() |
---|---|---|
Erinnert mich jetzt sehr an das PHP-Tutorial mit dem ich meinen Bot geschrieben habe. hehehe...
Ansonsten kann ich nichts drüber sagen. Firewallsupport wie mIRC ihn hat ist wohl in BB nicht möglich. LordChaos |
||
Variety is the spice of life. One day ignore people, next day annoy them. |
![]() |
simi |
![]() Antworten mit Zitat ![]() |
---|---|---|
sieht nicht schlecht aus......
ich hab ja auch mal einen mini-IRC-Clienten geschrieben, den ihr unter www.blitz2d.ch.vu mit source downloaden könnt. (danke @DA, dass du mir da auch am anfang geholfen hast....) Wenn ihr alle Befehle wissen wollt, könnt ihr mal hier schauen: http://www.faqs.org/rfcs/rfc1459.html |
||
![]() |
DA |
![]() Antworten mit Zitat ![]() |
---|---|---|
Moin,
@ LordChaos hmm. Habe noch nichts gehört über Firewall Support. Müsste man mal googlen. @Simi Danke fürs Feedback und für die Befehlsliste. Wollte den Link eigentlich auch noch dabeifügen habs dan aber irgendwie verplant. ![]() Mfg DarkAngel |
||
Deutscher Blitz Basic Chat |
![]() |
maximilian |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wozu ist btw. eigentlich das SeedRnd MilliSecs() da?
LordChaos |
||
Variety is the spice of life. One day ignore people, next day annoy them. |
![]() |
DA |
![]() Antworten mit Zitat ![]() |
---|---|---|
Moin,
@LordChaos ups. ![]() Hatte da was vergessen. Habs nochmal Editiert. Danke das du mich dran erinnert hast. @BladeRunner Jup. Dankö Mfg DarkAngel |
||
Deutscher Blitz Basic Chat |
m a j o r |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hab auch mal so n Tutorial gemacht, ihr könnt ja mal gucken. Is vllt net so toll, aber egal ^^
http://www.bbircbot.de.vu/ edit: Verbindet man sich mit PONG? Wusste ich gar net^^ Naja, wusste ja auch net genau was ich bei user angeben muss %) |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group