在特定超时后将python服务器更改为客户端

问题描述 投票:0回答:1

所以,我有一个服务器套接字定义为server_sock,当前代码如下所示

# define a variable server_sock
server_sock.bind(("", PORT_ANY))
server_sock.listen(1)
port = server_sock.getsockname()[1]
client_sock, client_info = server_sock.accept()
print("[+] Accepted connection from ", client_info)
server_sock.close()
client_sock.close()
# define a variable sock 
sock.connect((host, port))   # This will be the client socket

现在,这段代码将创建一个server_sock,监听传入的连接,并且在连接任何客户端之后,它将关闭这些套接字并通过使用另一个sock充当客户端。

我打算做的是首先让代码作为服务器(即server_sock应该等待连接)运行特定的超时(让我们假设10秒)。

在10秒之后,server_sock应该自己关闭,然后下一段代码(即客户端部分)应该开始。

因此,在特定的超时后,从服务器模式到客户端模式的改变就像是松散的。

我很难解决这个问题。通常server_sock.accept()线将被卡住,直到它遇到新连接,否则它将无法继续。

那么,我怎样才能实现在特定的超时后打破整个事情的东西。

请注意,我在Windows和UNIX上运行此代码跨平台。所以,我一直在寻找一些signal特定的答案,但Windows不支持一些信号。

编辑:

很多人都说要在插座上使用settimeout()。但这并不能解决我需要的行为。

因为假设我在server_sock模式下从设备获得连接,我想继续进行通信,而不是突然关闭套接字。

无论正在执行什么操作,settimeout()都将关闭套接字。所以,这没有回答我的情况

python client-server
1个回答
0
投票

您只需使用超时功能即可。

# define a socket variable server_sock

server_sock.settimeout(10.0)  #setting timeout for 10 sec

# rest of your code
© www.soinside.com 2019 - 2024. All rights reserved.