我正在为IRC客户端编写python代码。
我想了解IRC客户端和服务器如何相互通信。
任何人都可以给我很好的教程或IRC通信架构来深入理解吗?
由于
答案 0 :(得分:11)
IRC RFC文档是一个重要的参考资料,但我在IRC客户端和服务器之间的通信中发现的最有用的第一个介绍非常简单。
首先,您需要访问* nix shell(例如ssh到运行Linux的Web主机)。
在命令行中,使用程序' nc'打开与IRC服务器的直接连接。然后,您可以直接键入RFC命令,并查看响应。尝试输入
$ nc wright.freenode.net 6667
PASS whateveryoulike
NICK yournick
USER username 0 * :Real Name
服务器中有输出,但现在您已登录并注册了"你的用户注意:您的昵称尚未注册(ala NickServ),我指的是注册用户,如RFC 2812 IRC Client Protocol第3.1节所述。
您现在可以加入频道:
JOIN #yourtestchannel
查看频道中的对象:
WHO #yourtestchannel
给自己发一个消息:
PRIVMSG yournick Message Text Here
聊天频道(发送频道为msg):
PRIVMSG #yourtestchannel Message Text Here
如果您在真实的IRC客户端中连接到具有不同缺口的同一服务器和通道,这将特别有用。你可以和自己聊天并向另一个人发一个昵称,并看到" raw" IRC输出,您必须解析以编写自己的客户端或机器人。
例如,在频道中聊天的人看起来像这样:
:SomeDude28!SomeDude28@hoststring-with_various_parts PRIVMSG #channel :Hey guys, what's up?
使用RFC,您可以使用您想要的任何功能,更重要的是,弄清楚您将如何解析事物。
哦,不要偶尔忘记PONG,或者在PING提示时忘记,以避免ping超时。
答案 1 :(得分:9)
如果你想重新发明轮子,那么你必须实现RFC并从头开始做所有事情。
如果您不想这样做并且需要某种程度的抽象来简化您的开发(以及您应该这样做),那么请参阅Twisted。
还有一个Python IRC client库。
答案 2 :(得分:5)
对于大多数协议,一个好的开始方法是查找名为RFC的文档。有许多协议,它定义 - 深入 - 它应该如何表现。
您可以找到IRC here的那个。