2016-11-17 81 views
1

我試圖用Java構建一個irc bot。目前我的問題是我無法連接到Quakenet。我得到「您的客戶端可能與此服務器不兼容。」這可能是因爲我沒有爲這個機器人設置任何客戶端版本。我怎樣才能做到這一點?爲Java設置客戶端版本irc bot

我知道有用Java構建irc bot的庫,但我想從頭開始創建一個以獲得更多關於它的知識。

回答

3

這意味着服務器正在向您的客戶端發送一條查詢其版本的消息,並且您的客戶端(如果它完全響應)沒有響應服務器喜歡的字符串。它與您使用的軟件庫(或其版本)無關。

我推薦閱讀RFC1459(IRC協議),並觀察發送給客戶端的原始流量,以查看究竟發生了什麼。正如Yogi Berra曾經說過的那樣,「你只是通過觀察才能觀察到很多東西。」

+0

謝謝。但是,你能否詳細說明這一點?我不知道我怎麼能看到更多的流量,因爲我想我目前正試圖將所有東西輸出到控制檯。 – Kamsiinov

+0

最終你所做的就是打開一個套接字。只需將來自該套接字的任何內容打印到控制檯(除了您正在使用的任何其他功能外)。您將看到各種有趣的內容。我多年前從零開始寫了一個bot,但找不到源代碼。我最近的努力使用了pIRC庫。它很好地工作,但既然你想推出自己的產品,那對你真的不會有幫助。 – Duston

+0

這也是解決方案。看來,加入IRC網絡我不需要指定任何版本。只是尼克和用戶名。最後,我需要的是: 'Socket socket = new Socket(server,6667); \t \t BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(soketti.getOutputStream())); \t \t BufferedReader br = new BufferedReader(new InputStreamReader(soketti.getInputStream())); \t \t System.out.println(「Starting login」); \t \t //登錄服務器 \t \t bw.write(「NICK」+ nickname +「\ r \ n」); \t \t bw.write(「USER」+ login +「8 *:robot \ r \ n」); \t \t bw.flush();' – Kamsiinov