Я использую разъем для подключения к простому серверу, чтобы получить некоторые данные:Получить все данные при использовании питона сокета
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
host = "X.X.X.X"
port = Y
s.connect((host,port))
data = s.recv(512)
print data
Не все ожидаемые полученных данные принимаются; некоторые из них отрезаны. Поэтому любые операции, которые мне нужно выполнить на полученных данных, отбрасываются.
Я пробовал использовать s.settimeout(1)
и помещать сокет в неблокирующий режим. Как ни странно, он отлично работает в ipython.
использовать петлю для считывания до тех пор, пока соединение не будет закрыто другой стороной. Или создайте простой протокол, в котором вы отправляете количество байтов для чтения, а затем читаете в цикле, пока не получите столько байтов. – JBernardo