Rav*_*thy 4 python sockets python-2.7 server
我为我制作的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()
Run Code Online (Sandbox Code Playgroud)
我收到的错误消息是
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
Run Code Online (Sandbox Code Playgroud)
谁能告诉我我怎么得到这个错误以及如何解决呢?
您收到此错误的原因是您使用close
了套接字,然后recvfrom
再次调用。
如果print
在与的行后添加recvfrom
,您会注意到对的第一个调用recvfrom
按预期工作。第二个调用(循环一次后)将引发您看到的错误。
只需删除即可修复代码s.close()
。(您不必关闭与客户端的连接,因为UDP没有这个概念,与TCP相反,请记住这一点。)