用Python编写IRC客户端

8

我正在为IRC客户端编写Python代码。

我想了解IRC客户端和服务器之间如何相互通信。

有没有人能给我一个好的教程或IRC通信架构,以便深入理解呢?

谢谢!

3个回答

12

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

在此期间,服务器会有输出信息,但现在您已登录并“注册”了用户。请注意:您的昵称未注册(即NickServ),我指的是根据RFC 2812 IRC客户端协议第3.1节所述进行用户注册。

现在您可以加入频道:

JOIN #yourtestchannel

查看频道中的成员:

WHO #yourtestchannel

给自己发送一条消息:

PRIVMSG yournick Message Text Here

在频道中进行聊天(向频道发送消息):

PRIVMSG #yourtestchannel Message Text Here

这对于在真正的IRC客户端中连接到同一服务器和频道,但使用不同昵称的情况特别有帮助。你可以与自己聊天并向另一个昵称发送消息,然后查看“原始”IRC输出,以便解析并编写自己的客户端或机器人。
例如,在频道中聊天的人会呈现出以下形式:
:SomeDude28!SomeDude28@hoststring-with_various_parts PRIVMSG #channel :Hey guys, what's up?

利用RFC,你可以随意尝试任何功能,并更重要的是,弄清楚你需要解析哪些内容。

哦,还有别忘了偶尔发送PONG,或在收到PING提示时发送PONG,以避免出现PING超时。


10

如果您想要重新发明轮子,那么您需要实现RFC并从零开始做一切。

如果您不想这样做,并且希望在开发中使用某种程度的抽象(这是您应该做的),那么请查看Twisted

还有一个Python IRC客户端库。


5

对于大多数协议来说,一个好的开始是查找名为RFC的文档。许多协议都有这样的文档,并且它详细定义了它应该如何运作。

你可以在这里找到IRC的RFC文档。


1
@EgorSmolyakov 答案已经有8年历史了 :-) RFC 1459涵盖了IRC。我为您方便更新了链接。 - Vitor Py

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接