Jef*_*tle 5 python sockets select server
我正在 python 3.6.1 中开发一个简单的聊天应用程序供个人使用。我在 select.select 时遇到此错误:
Traceback (most recent call last):
File "C:\Users\Nathan Glover\Google Drive\MAGENTA Chat\chat_server.py", line
27, in <module>
ready_to_read,ready_to_write,in_error = select.select(SOCKET_LIST,[],[],0)
ValueError: file descriptor cannot be a negative integer (-1)
Run Code Online (Sandbox Code Playgroud)
这是代码:
ready_to_read,ready_to_write,in_error = select.select(SOCKET_LIST,[],[],0)
Run Code Online (Sandbox Code Playgroud)
这完全是因为我不太了解 select ,并且文档没有帮助。有人可以解释为什么会发生这种情况吗?
我知道这个问题已经很久没有被问到了。但我想让OP和其他人知道这里的问题。这里的问题是 SOCKET_LIST 必须包含一个不存在的套接字连接,该连接可能已在之前断开。如果您通过这样的连接来选择它会出现此错误
ValueError: file descriptor cannot be a negative integer (-1)
Run Code Online (Sandbox Code Playgroud)
对此的一个简单解决方案是将select块放入 try - except 块中并捕获错误。当发现错误时,可以从 SOCKET_LIST 中删除该连接。