我为我制作的 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
谁能告诉我如何得到这个错误以及如何解决它?
您收到此错误是因为您close
套接字然后调用recvfrom
again.
如果您添加一个print
在该行之后recvfrom
,你会注意到第一次调用recvfrom
按预期工作。第二次调用(循环一次后)抛出您看到的错误。
只需删除即可修复您的代码s.close()
。 (您不需要关闭与客户端的连接,因为 UDP 没有这个概念,而如果您考虑到这一点,则与 TCP 不同。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)