Собственно, суть проблемы в том, что автоматически не чистится буфер приемника.
Пример: посылаем какую-нибудь команду и в ответ получаем какое-то количество данных (например, мегабайт), которые записываем в файл (в примере: по 2 килобайта). Максимум, что может принять данная программа - 65535 байт, дальше - вылет по таймауту.
Теперь вопрос: существует ли какая-нибудь команда для удаления считанных данных из буфера приема, чтобы при вызове data = soc.recv() данные остались только в переменной data?
И да, маленький пример:
import socket file=open('D:\Bytes.e', 'ab') HOST = '192.136.0.2' PORT = 6946 soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) soc.settimeout(5) soc.connect((HOST, PORT)) soc.send('1') data = soc.recv(2048) while data: file.write(data) data = soc.recv(2048) file.close() soc.close()