Python IRC bot 在 3 次 ping 后断开连接
Posted
技术标签:
【中文标题】Python IRC bot 在 3 次 ping 后断开连接【英文标题】:Python IRC bot disconnecting after 3 pings 【发布时间】:2014-09-12 22:19:37 【问题描述】:所以我编写了一个小型 twitch irc 机器人,但它断开了连接,机器人只是保持 ping 的状态,在 3 次 pong 之后,我的机器人从 twitch 接收到 0 数据并从查看器列表中消失。
这是代码(重要部分):
readbuffer = ""
while (1):
readbuffer=readbuffer+s.recv(4000)
temp=string.split(readbuffer, "\n")
readbuffer=temp.pop( )
for line in temp:
print line
elif(line[0]=="PING"):
s.sendall("PONG %s\r\n" % line[1])
它是一个使用不同参数作为线程部署 2 次的函数..
问题是我首先在 twitch.tv 查看器列表中看到 2 个机器人大约 5 分钟,然后在 3 次 ping 之后完全 twitch 不再 ping 或发送任何东西。
如果您想了解更多信息,请向我索取更多代码。
【问题讨论】:
你确定它实际上是在发送任何响应/line[0]
不是单个字符吗?
我会尝试使用 if('PING' in line):
还是一样,会不会是twitch那边的问题?
我 90% 确定您的缓冲区逻辑已损坏。请看我的回答。
不要将答案/cmets 放在问题的答案中。如果您有解决方案,您可以回答您自己的问题。
【参考方案1】:
也许不相关:
将套接字解释为文件:https://docs.python.org/2/library/socket.html#socket.socket.makefile
f = s.makefile()
for line in f:
print 'Read:', line
command, arguments = line.rstrip().split(' ', 2)
if command == 'PING':
f.write('PONG ' + arguments + '\r\n')
这让很多事情变得如此简单。如果问题仍然存在,请尝试并发表评论。
【讨论】:
现在尝试这个需要一些时间 修复问题并解决了更大的问题。我收到一个错误,连接被主机中的软件强行关闭。连接被远程主机中止,分别出现错误 10053 和 10054。可能是 Windows 问题 对不起,我对 Windows 套接字一无所知。我只在 Linux 和 *BSD 上编程。以上是关于Python IRC bot 在 3 次 ping 后断开连接的主要内容,如果未能解决你的问题,请参考以下文章
Twisted Python IRC Bot - 如何在 bot 运行命令时监听命令?
Python IRC bot + SQLAlchemy - 多渠道跟踪用户
Discord Bot 在被烧瓶服务器 ping 后总是说它在线很多次 - PYTHON