我的IRC机器人只有一个简单的缓冲系统,所以它不会因为网络滞后等而错过一条线路。 我使用以下代码启动处理从服务器收到的信息的循环:
while 1: #Start the main loop
self.readbuffer += s.recv(1024).decode()
temp=self.readbuffer.split("\n")
self.readbuffer=temp.pop()
问题在于缓冲区似乎永远不会清除,所以任何时候我都希望对数据进行循环处理。因此,如果我告诉机器人做某事,它也会完成之前所做的一切。通过调试我已经确认缓冲区确实永远不会清除。 所以...基于上面的代码(唯一修改缓冲区的代码)我的问题是什么? 谢谢你的阅读。
答案 0 :(得分:0)
你在哪里尝试清除缓冲区?
self.readbuffer += s.recv(1024).decode()
向readbuffer添加更多数据。
temp=self.readbuffer.split("\n")
将readbuffer转换为单行字符串列表
self.readbuffer=temp.pop()
使readbuffer成为最后一行
如果readbuffer永远不会变小,那一定是因为你从未收到换行符。也许IRC使用'\r'
或其他一些代码来表示新帖子?