为了账号安全,请及时绑定邮箱和手机立即绑定

Python 中的 socket.close(fd)。'fd' 是什么意思?

Python 中的 socket.close(fd)。'fd' 是什么意思?

当年话下 2023-02-22 13:58:42
我这里有这段代码:import socket socket.close()我收到一条警告,指出 socket.close() 缺少“fd”参数。一般用法应该填什么整数,整数是什么意思?
查看完整描述

2 回答

?
梦里花落0921

TA贡献1772条经验 获得超5个赞

这里的 fd 是“文件描述符”,您必须知道如何处理文件描述符、文件描述符 fd(文件对象的 fileno() 方法返回的整数)并根据结果构建套接字对象。



查看完整回答
反对 回复 2023-02-22
?
摇曳的蔷薇

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 答案有关套接字和文件描述符的快速幻灯片

我不知道这里的最佳解决方案,也不了解所有内容,所以如果我犯了错误或有更好的资源,请在下面评论!


查看完整回答
反对 回复 2023-02-22
  • 2 回答
  • 0 关注
  • 237 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信