Python: не может получить все данные из сокета - PullRequest
0 голосов
/ 15 декабря 2018

Я использую код ниже, пытаясь получить все данные из 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 голосов
/ 17 декабря 2018

recv возвращает до запрошенной суммы.Вы должны проверить возвращаемое значение и вызвать его снова, пока не получите ожидаемую сумму.Реализуйте буфер, который накапливает данные и возвращает точное запрошенное количество.

...