2010-11-10 123 views
5

我正在爲IRC客戶端編寫python代碼。python中的IRC客戶端

我想了解IRC客戶端和服務器如何相互通信。

任何人都可以給我很好的教程或IRC通信架構來深入瞭解它嗎?

謝謝

回答

9

如果你想重新發明輪子,那麼你必須實現RFC並從頭開始做所有事情。

如果你不想這樣做,並且需要某種程度的抽象來減輕你的開發(和你應該的),那麼請參閱Twisted

還有一個Python IRC client庫。

+1

+1:用Twisted實現IRC很容易。 – 2010-11-10 18:11:54

+3

我也寫了https://irc3.readthedocs.org/與python3/asyncio – gawel 2014-05-10 09:24:56

5

對於大多數協議來說,一個好的方法就是查找一個名爲RFC的文檔。對於許多協議有一個,它定義 - 深入 - 它應該如何表現。

你可以找到一個IRC here

10

IRC RFC文檔是一個重要的參考文獻,但我在IRC客戶端和服務器之間的通信中找到的最有幫助的第一個介紹非常簡單。首先,您需要訪問* nix shell(例如運行Linux的Web主機中的ssh)。

在命令行中,使用'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 

聊天引入通道(發送通道1味精):

PRIVMSG #yourtestchannel Message Text Here 

如果您在真正的IRC客戶端中連接到同一臺服務器並使用不同的暱稱,則此功能特別有用。你可以和自己聊天,並且可以和另一個人交談,並且看到你需要解析的「原始」IRC輸出來編寫你自己的客戶端或機器人。

例如,有人在聊天頻道看起來是這樣的:

:[email protected]_various_parts PRIVMSG #channel :Hey guys, what's up? 

使用RFC,可以玩弄任何你想要的功能,更重要的是,找出如何,你需要解析事物。

噢,不要忘了PONG偶爾或者在提示PING的時候避免ping超時。

+0

安全通信也很簡單嗎? – 2014-05-14 11:30:54