对于我所做的udp服务器程序,此代码的错误文件描述符出现错误
from socket import *
s = socket(AF_INET, SOCK_DGRAM)
s.bind(('', 890))
while True:
(c,a) = s.recvfrom(1024)
msg = 'thanks for requesting'
s.sendto(msg,a)
s.close()
我收到的错误信息是
Traceback (most recent call last):
File "udpserv.py", line 7, in <module>
(c,a) = s.recvfrom(1024)
File "/usr/lib/python2.7/socket.py", line 174, in _dummy
raise error(EBADF, 'Bad file descriptor')
socket.error: [Errno 9] Bad file descriptor
有人能告诉我我是怎么得到这个错误的,以及如何解决它吗?
如果有一个无限while循环,则可以得到相同的错误。在我的情况下,我替换了
与
出现此错误是因为您
close
套接字,然后再次调用recvfrom
。如果在带有
recvfrom
的行后添加print
,您将注意到对recvfrom
的第一个调用按预期工作。第二个调用(循环一次后)抛出您看到的错误。只需删除
s.close()
即可修复代码。(您不需要关闭到客户机的连接,因为UDP没有这个概念,如果您有这个概念的话,则与TCP相反。)相关问题 更多 >
编程相关推荐