gpt4 book ai didi

python套接字对象接受超时

转载 作者:太空狗 更新时间:2023-10-29 18:16:32 34 4
gpt4 key购买 nike

问题:python 中的 socket.accept() 函数是否有某种超时或中断?


信息:

我有一个程序,它有一个子线程绑定(bind)到一个端口,并不断接受和照料它们并将它们传递给主线程的队列。现在我正试图让子线程中断,以便它可以适本地解构。我认为我可以简单地停止子线程并让父线程解构子线程,但在其他时候我希望能够提前返回表单接受,所以我认为这是最有用的方法。

那么,有没有一种方法可以让我暂停或取消接受方法,这样线程就可以返回,而无需先连接到它?

最佳答案

你可以像这个例子一样使用settimeout():

import socket

tcpServer = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcpServer.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
tcpServer.settimeout(0.2) # timeout for listening
tcpServer.bind(('0.0.0.0', 10000)) # IP and PORT
tcpServer.listen(1)

stopped = False
while not stopped:
try:
(conn, (ip, port)) = tcpServer.accept()
except socket.timeout:
pass
except:
raise
else:
# work with the connection, create a thread etc.
...

循环将一直运行,直到 stopped 设置为 true,然后在(最多)您设置的超时后退出。 (在我的应用程序中,我将连接句柄传递给新创建的线程并继续循环以便能够接受更多的同时连接。)

关于python套接字对象接受超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7354476/

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