IRC-Client mit Blitzmax?
Übersicht

![]() |
FetzeBetreff: IRC-Client mit Blitzmax? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi!
Ich bin ein kompletter Netz-Noob, würde mich aber gerne mal an einem billigen IRC-Client in Blitzmax versuchen. Er muss gar nichts weiter können als joinen, schreiben und wieder gehen. Das Problem ist, dass ich nicht weis, wie ich einen Stream zu einem IRC-Channel herstelle und wie ich richtig joine. Ich bin mir auch ziemlich sicher, irgendwo mal einen nicht sehr langen Beispielcode zu dem Thema gesehen zu haben... ich erinnere mich aber nicht mehr wo. Also falls mir jemand sagen kann, wo ich diesen Beispielcode finde oder mir erklären kann, wie genau ich das selber anstelle, wäre ich sehr dankbar. |
||
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da könnte dir das IRC RFC weiterhelfen:
http://www.irchelp.org/irchelp/rfc/rfc2812.txt Da steht eigentlich alles drin, hoffe du kannst Englisch ![]() Das Verbinden ist eigentlich ganz einfach. TCP Verbindung auf den IRC Server machen, meistens Port 6667. Zu Beginn sendest du diesen Header (die einzelnen Zeilen mit Writeline): Code: [AUSKLAPPEN] PASS <passwort>
NICK <nickname> USER <user> <mode> <unbenutzt> <realname> PASS wird nur benötigt wenn der Server passwortgeschützt ist. <user> ist der Benutzername (was anderes als Nick). <mode> ist eine Bitmask, kann soviel ich weiss 0, 1 oder 2 sein. <unbenutzt> wird nicht benutzt, da kann man irgendwas schreiben.. <realname> halt ein Name ![]() Danach sendet dir der Server ne Antwort. Wenn die Verbindung in Ordnung ist kommen ganz viele Sachen wie MOTD usw. Eine Liste der Antworten steht auch im RFC unter Kapitel 5.1 Command responses. 001 bedeutet zum Beispiel Willkommen, das müsste er senden wenn die Verbindung in Ordnung ist als erstes. Der Server sendet die Antworten auch immer als String (Zeile) mit dem Format: Code: [AUSKLAPPEN] :server.hostname.de 001 :Welcome to the Internet Relay Chat...
Wenn ein : am Anfang steht folgt direkt danach der Host des Servers. Wenn es nicht steht beginnt die Zeile direkt mit dem Kommando oder der Antwort (001). Nach dem Kommando stehen die Parameter. Bei ner Antwort zum Beispiel der Text der angezeigt werden könnte usw. |
||
![]() |
Fetze |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke für die ausführliche Hilfe, aber da wäre noch eine Recht simple Frage offen:
Wie stelle ich jetzt per OpenStream eine Verbindung zum IRC-Server her? Was genau muss ich da eingeben? Das Beispiel für Webadressen kenne ich, aber wie sage ich dem Befehl, dass es eine Verbindung zu einem IRC-Server sein soll? Ich hätte gerne mal ein einfaches Beispiel. Nur OpenStream, den Rest sollte ich alleine hinbekommen. |
||
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es spielt keine Rolle zu was man verbindet ![]() Die verschiedenen Servertypen benutzen unterschiedliche Protokolle, das ist sozusagen ihre Verständigungssprache. Ein Webserver arbeitet nach dem HTTP Protokoll. Dann muss man ihm auch HTTP Anfragen senden. Der kann mit IRC Befehlen nichts anfangen ![]() Ein IRC Server benutzt dann halt das IRC Protokoll, also versteht er die ganze IRC Sprache und man kann ihm IRC Befehle senden. Wer nen eigenen Server programmiert macht sich eigentlich ein eigenes Protokoll. Auch da muss dann der Client die selbe Sprache sprechen, sonst kann der Server nichts mit den Daten machen. Falls du BNet von Vertex benutzt dann ist es eigentlich nichts weiter als: Code: [AUSKLAPPEN] OpenTCPStream("irc.quakenet.org", 6667)
Der Rest hängt von deinem Client ab, er muss richtige Anfragen stellen und die Antworten richtig interpretieren, das ist alles. |
||
![]() |
Fetze |
![]() Antworten mit Zitat ![]() |
---|---|---|
Okay, danke. Was mache ich, wenn ich nicht BNet benutze? Was genau macht BNet anders als das Standard "OpenStream"? | ||
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
OpenStream unterstützt irgendwie die Portangabe nicht. Man kann zwar das Protokoll angeben, aber ohne Port ist das ja sinnlos. Es gibt aber ne andere Möglichkeit wie man es mit BlitzMax Befehlen schafft:
Code: [AUSKLAPPEN] Local sock:TSocket = CreateTCPSocket()
ConnectSocket(sock, HostIp("irc.quakenet.org"), 6667) Local stream:TStream = CreateSocketStream(sock) |
||
![]() |
Fetze |
![]() Antworten mit Zitat ![]() |
---|---|---|
Okay, danke, das ist alles, was ich brauche. | ||
![]() |
rema |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da gibts die verschiedendsten Schichten:
1) Hardware 2) IP 3) TCP 4) Protokoll-Schicht Nun, die ersten 3 sind immer gleich, wen es sich um ein normale Anwendung handelt. Nur http, ftp, irc, email ... und so weiter haben ihre eigenen Protokolle, also wie die Kommunikation abläuft, und auch ihre dementsprechenden Ports. Jetzt musst du nur wissen, welcher Port, und welche kommunikationsart, bzw Protokoll IRC braucht. Glaube unter wikipedia sollte man einige Infos finden können. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group