Ich habe schon früh mit IRC angefangen und war schon immer fasziniert davon. Als Sprachübung habe ich darüber nachgedacht, einen einfachen IRC-Client in Ruby mit Shoes als grafisches Frontend zu programmieren. Meine Frage an Sie, nette Herren, was muss ich lernen, um mit diesem großen Abenteuer anzufangen (neben Schuhen und Ruby natürlich)? Ich kann mir vorstellen, dass das IRC-Protokoll eine Art Spezifikation enthält. Irgendwelche Zeiger?Einen einfachen IRC-Client (Internet-Relay-Chat) programmieren
Antwort
Ein früherer Eintrag erwähnte RFC1459. Obwohl es eine sehr gute Einführung in IRC ist, wurde es durch die RFCs 2810-2813 ersetzt. Hier ist eine vollständige Liste der Dokumentation, die Sie brauchen etwas zu programmieren IRC bezogen:
- RFC1459 (original RFC; ersetzt, aber immer noch nützlich)
- RFC2810 (IRC Architektur)
- RFC2811 (IRC-Channel-Management)
- RFC2812 (IRC Client-Protokoll)
- RFC2813 (IRC-Server-Protokoll)
- CTCP specification
- DCC specification
- Updated CTCP specification (nicht alle Kunden diese unterstützen)
- ISupport (response code 005) draft (fast alle Server unterstützen dies heutzutage)
- Client capabilities (CAP command) draft (unterstützt von einigen Servern/Clients)
- IRCv3 standards and proposals (die zukünftigen Funktionen von IRC, von denen einige bereits weit verbreitet sind)
Die IRC-Spezifikation ist in RFC 1459
ich dieses Juwel gefunden auf Wikipedia angelegt. Klingt einschüchternd.
Es ist eigentlich nicht.
Telnet auf einen IRC-Server und Zeuge der Einfachheit des Protokolls aus erster Hand. Der schwierigste Teil ist der Händedruck, danach ist es sehr einfach.
+1 Telnet und versuchen Sie es manuell zuerst! –
+1 - Ich habe auf IRC über Telnet gechattet (nur für die Geek-Punkte) – Blorgbeard
Ich habe einmal einen Client und einen Server mit 2 weiteren Leuten implementiert (als Teil eines Kurses).
Ich kann Ihnen sagen, dass der RFC, mit dem Sie schon verbunden waren, großartig ist.
Ich würde auch versuchen, einfach eine Verbindung mit einem vorhandenen Client zu schnüffeln, um selbst zu sehen, wie Sachen funktionieren.
Nicht genau eine Antwort auf Ihre Frage, aber es kann hilfreich sein. Wenn Sie Ruby-verwenden, habe ich das Herbstlaub-Projekt zu sein eine gute Möglichkeit, finde ein IRC-Bot mit Ruby zu bauen:
http://github.com/RISCfuture/autumn/tree/master
Es ist so ziemlich das Jibble der Ruby-Welt.
Beachten Sie, dass RFC2810-RFC2813 mein IRCnet allein geschrieben wurde (nach dem großen Split). IRCnet ist im Grunde das einzige große Netzwerk, das '!' Kanäle unterstützt. 005 Parsen und Verstehen jedes Tokens ist schwer. Verschiedene Netzwerke unterstützen andere Kanalmodi (wie 'q',' a' und 'h' als Besitzer, Admin und HalfPop). –
' 005' Parsing ist eigentlich nicht so kompliziert. Neue Token werden nicht oft hinzugefügt (noch weniger in der Zukunft, wenn IRCv3 angenommen wird), und das Analysieren der aktuellen Token ist ziemlich einfach: https://github.com/cinchrb/cinch/blob/master/lib/cinch/isupport .rb – Hinrik
Sie analysieren nicht alle Token. Sie analysieren nur eine Handvoll Tokens, aber nicht alle. –