2

IRCボットを作成しようとしていますが、240秒後にタイムアウトし続けます。どうすればこれを修正できますか?

import socket 
host = 'test'
port = 6667
channel = '#test'
nick = "test"
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.send('NICK ' + str(nick) +  ' \n\r') 
s.send('USER v v v :v Script' + '\r\n')
s.send('JOIN '+channel+' \n\r')

while True:
    command = s.recv(4096)
    print command
4

3 に答える 3

5

サーバーからのping要求に応答していません。

長時間アイドル状態の場合、サーバーは接続が切断されていると判断し、ping要求を送信します。その場合、pong(およびping後にサーバーから送信されたもの)で応答する必要があります。したがって、サーバーからこれが送信された場合は、それが返信になります。

PING :HELLO_WORLD
PONG :HELLO_WORLD

それがないと、サーバーはリンクが停止していることを確認し、接続を終了します。

于 2012-06-03T05:57:59.493 に答える
1

irclib を使ってみることもできますが、サーバーの PING メッセージに応答していない可能性が高いです。

受信したメッセージが「PING」で始まる場合は常に、「PONG」という単語とプログラム名 (オプションでホスト名) を含む「PONG」メッセージで返信する必要があります。「PONG」の後にスペースを残してください。

PING および PONG メッセージの完全な IRC 仕様を確認し、実験で不足している可能性のあるその他の事項を調べてください: http://www.irchelp.org/irchelp/rfc/rfc.html

于 2012-06-03T05:40:14.323 に答える