我这里有这段代码:import socket
socket.close()我收到一条警告,指出 socket.close() 缺少“fd”参数。一般用法应该填什么整数,整数是什么意思?
2 回答
梦里花落0921
TA贡献1772条经验 获得超5个赞
这里的 fd 是“文件描述符”,您必须知道如何处理文件描述符、文件描述符 fd(文件对象的 fileno() 方法返回的整数)并根据结果构建套接字对象。
摇曳的蔷薇
TA贡献1793条经验 获得超6个赞
试图寻找一个明确的解释,但如果你陷入困境, rdas提到的答案可能是最好的选择。澄清一下,如果您创建一个名为 的新套接字my_socket
,请尝试执行my_socket.close()
。根据官方python 文档,尝试类似
# Echo client programimport socketimport sys HOST = 'daring.cwi.nl' # The remote host# you need to indicate the host name here# use# HOST = socket.gethostbyname("")# to use '0.0.0.0'PORT = 50007 # The same port as used by the servermy_socket = Nonefor res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM): af, socktype, proto, canonname, sa = res try: my_socket = socket.socket(af, socktype, proto) except OSError as msg: my_socket = None continue try: my_socket.connect(sa) except OSError as msg: my_socket.close() my_socket = None continue break
在试图解决这个问题时,我还查看了这篇文章,其中很多内容与Socket Programming HOWTO文章中断开连接部分的信息相呼应。
进一步查看套接字模块文档页面,似乎有一个部分fd
作为参数包含在内,但另一部分没有......不确定这部分,所以其他人可以澄清一下吗?这里发生了什么?
有关一般套接字的更多信息,请查看其他 SO 答案和有关套接字和文件描述符的快速幻灯片。
我不知道这里的最佳解决方案,也不了解所有内容,所以如果我犯了错误或有更好的资源,请在下面评论!
添加回答
举报
0/150
提交
取消