首页 > 解决方案 > Python:无法从 Socket 接收所有数据

问题描述

我正在使用下面的代码尝试从我的套接字接收所有数据。当我向设备发送 SCPI 命令“FETCh?\n”时,它会返回大量数据,而 recv() 函数只返回其中的一部分。

有谁知道如何解决这个问题?提前致谢!

class SCPI:
        PORT = 5025

        def __init__(self, host, port=PORT):
            self.host = host
            self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            self.s.connect((host, port))
            self.f = self.s.makefile("rb")

        def scan(self): 
            self.s.send("FETCh?\n")
            data = self.s.recv(268435456)
            print(data)
            return data

标签: pythonsocketsrecv

解决方案


recv返回所要求的金额。您必须检查返回值并再次调用它,直到您收到预期的金额。实现一个缓冲区来累积数据并返回请求的确切数量。


推荐阅读