我正在尝试制作一个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
答案 0 :(得分:5)
您没有回复来自服务器的ping请求。
当你闲置很长时间时,服务器认为连接已经死了,并发送ping请求,你需要用pong回复(以及ping之后服务器发送给你的任何东西)。因此,如果服务器发送给您,那应该是您的回复:
PING :HELLO_WORLD
PONG :HELLO_WORLD
如果没有,服务器将确认链接已死并终止连接。
答案 1 :(得分:0)
您可以尝试使用irclib-但是帽子正在发生,很可能是您没有回复服务器的PING消息。
每当收到的消息以“PING”开头时,您必须使用包含单词PONG和您的程序名称(以及可选的主机)的“PONG”消息回复它 - 在“PONG”之后留一个空格。
检查PING和PONG消息的完整IRC规范,并查看实验中可能缺少的其他内容:http://www.irchelp.org/irchelp/rfc/rfc.html