Python:无法从Socket接收所有数据

时间:2018-12-15 18:31:40

标签: python sockets recv

我正在使用下面的代码尝试从I套接字接收所有数据。当我向设备发送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

1 个答案:

答案 0 :(得分:0)

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