Python3 socket.recv,不带acking

2024-09-21 05:49:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我的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()

Tags: 方法程序sendmessagedatamsgsocket对话
1条回答
网友
1楼 · 发布于 2024-09-21 05:49:23

接收到数据时,必须发送确认。否则,发送方将简单地假设没有收到数据,并将尝试重新发送数据。这将基本上暂停通信,因为只有(最初很小的)未确认数据窗口是可接受的。因此,建立这样的联系是没有意义的,这就是为什么没有办法做到这一点

相关问题 更多 >

    热门问题