select.select()阻止我的MUD服务器不应该

时间:2013-05-24 21:17:36

标签: sockets python-3.x telnet mud

我正在使用 miniboa library 进行非阻塞的telnet风格的套接字编程。

该库包含一个简单聊天服务器的演示。

在第809行,在poll()函数中,系统使用select.select()函数。在miniboa.py文件中运行演示服务器时,服务器不会阻止此功能;它会执行并继续而不会跳过一个节拍。

我正在编写一个基于该代码的网络代码的MUD,但是在我的MUD服务器中(参见下面的链接),服务器每次都在同一个呼叫上阻塞。

在我的MUD的 network.py 库中,在第68行,服务器执行poll()函数。这与在简单聊天服务器中执行的功能相同,除非在我的MUD服务器中执行,它会在select.select()调用时阻止。

我不知道它为什么会阻塞,但它阻塞了,并且在用户发送数据之前,循环不会重复。如果没有人发送任何内容,服务器就会等待。

有没有人知道为什么会这样?我很乐意回答有关代码的任何问题,并且它是开源的,因此您可以查看所有代码并根据需要使用它。

我感谢你们所能提供的任何帮助。自从我多年前第一次扮演一个孩子以来,我一直梦想制作一个MUD,而且我害怕继续努力,直到我把这个bug整理好。在我修复此错误之前,服务器将无法正常运行。

  

TL; DR:我的服务器在等待客户端输入时卡在select.select()函数中,但它不应该在那里暂停。我无法弄清楚它为什么会阻塞。

0 个答案:

没有答案