我的python程序正在与一个设备进行对话,该设备在每次接收到一个ack到一个push/ack时都会将对话延迟整整一秒钟。对话的长度是数百条,如果不是数千条的话,所以我很自然地想找到一种方法来解决这个问题
是否有一种方法可以打开到我的设备的连接,使其保持打开状态,以便发送到设备,但不使用socket.recv()确认我收到的消息
import socket
s = socket.socket()
s.bind(('', xxxxx))
s.connect(('x.x.x.x', xxxxx))
while True:
try:
msg = input()
if 'exit' in msg:
data = b'I am done now, bye'
s.send(data)
data = s.recv(2048)
print('recieved final message: ' + str(data))
break
msg = msg.encode()
s.send(msg)
print('sent message: ' + str(msg))
data = s.recv(2048)
print('received message: ' + str(data))
print()
data = ''
except Exception as e:
print(e)
s.close()
接收到数据时,必须发送确认。否则,发送方将简单地假设没有收到数据,并将尝试重新发送数据。这将基本上暂停通信,因为只有(最初很小的)未确认数据窗口是可接受的。因此,建立这样的联系是没有意义的,这就是为什么没有办法做到这一点
相关问题 更多 >
编程相关推荐