我想创建一个 python 套接字(或 SocketServer),一旦连接到单个设备,它就会保持打开的连接,以便定期检查是否已发送任何数据。套接字只会监听一个连接。
例如:
def get_data(conn):
response='back atcha'
data = conn.recv(1024)
print 'get_data:',data
if data:
conn.send(response)
s = open_socket()
conn, addr = s.accept()
while True:
print 'running'
time.sleep(1)
get_data(conn)
#do other stuff
一旦服务器套接字被绑定并且连接被接受,套接字在运行 .recv 时阻塞,直到连接的客户端发送一些数据或关闭它的套接字。由于我在等待不规则的数据(可能是几秒钟,也可能是一天),同时程序还需要执行其他任务,所以这种阻塞是个问题。
我不希望客户端关闭其套接字,因为它可能需要随时向(从)服务器发送(或接收)数据。是在单独的线程中运行它的唯一解决方案,还是有一种简单的方法来设置客户端/服务器套接字以永久保持连接(这安全吗?它将在 VLAN 上运行),而不是在没有阻塞时阻塞数据已收到?