gpt4 book ai didi

python - 如何在等待接收数据时关闭阻塞套接字?

转载 作者:太空狗 更新时间:2023-10-30 02:22:56 24 4
gpt4 key购买 nike

我有一个使用阻塞套接字接收数据的服务。我遇到的问题是,如果它仍在等待数据,我不知道如何正确关闭套接字。下面是我如何打开和等待数据的简短片段:我不想实现超时,因为根据 python 文档,套接字必须阻塞才能使用 makefile

由于我是套接字编程的新手,所以我可能完全错了。

编辑:

请注意,我无法更改服务器的运行方式。

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
reader = s.makefile("rb")
line = reader.readline()

最佳答案

有一个非常简单的解决方案。给定一个套接字和一个读取器文件对象,如 rfile = socket.makefile('rb'),为了使 rfile.readline() 在套接字关闭时立即返回,您需要在单独的线程中执行以下操作:

socket.shutdown(socket.SHUT_RDWR)
socket.close()

调用 socket.shutdown()将使 rfile.readline() 返回空的 strbytes,具体取决于 Python 的版本(分别为 2.x 或 3.x) ).

关于python - 如何在等待接收数据时关闭阻塞套接字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7572682/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com