Python套接字接收

时间:2019-06-16 21:39:26

标签: python-3.x sockets

我需要实现一个简单的网络通信协议。 我使用Python 3.7。该程序在“本地主机”模式下工作。但是,在LAN上无法正常工作。我通过socket启动socketserver

我设法建立连接,但是有时在recv中,该程序只是无限地闲逛。它设法通过了几千字节,但随后随机阻止了所有内容。

阻止模式设置为true,所以我想知道是否没有发送数据,但另一端发送了信息。所以发生了什么事?信息没有到达吗?还是由于某种原因被删除了?

是否有可靠的方法来检查消息是否(由发件人)到达并在需要时重新发送数据?

def ReceiveRaw(self, msgLen):
    msgOut = bytearray()
    totalReceived = 0
    while totalReceived < msgLen:
        chunk = self.sock.recv(min(msgLen - totalReceived,2048)) #sometimes hangs here infinitely

        if len(chunk) == 0:
            raise RuntimeError("socket connection broken")
        totalReceived+= len(chunk)

        for b in chunk:
            msgOut.append(b)

    return msgOut

0 个答案:

没有答案