Ваш код вызывает recv (200) только один раз.Метод recv () работает так: он возвращает не менее 1 байта и не более 200 (в данном случае) байтов.Он будет заблокирован, если нет доступных данных.Он вернет пустую строку, когда сервер закроет соединение.
Не зная полного протокола, я могу только догадываться, но вам по крайней мере нужно перебрать вызов recv (), пока вы не отправите полные данныес сервера.Если, например, сервер отправляет кучу данных и затем закрывает соединение, будет работать что-то вроде этого:
data = ""
while True:
chunk = s.recv(200)
if not chunk: break
data += chunk
Поскольку это регистратор данных, у меня есть другое предположение, что вы получите строкиданные, пока вы не скажете серверу остановиться (возможно, отправив другой символ).В этом случае:
data = ""
while True:
chunk = s.recv(200)
if not chunk: break
data += chunk
# Test for a complete line in the data buffer.
n = data.find('\n')
if n != -1:
# Remove the line from the front of the buffer.
# Leave any remaining lines or partial lines in data.
line,data = data[:n+1],data[n+1:]
print line
Обратите внимание, что, как работает TCP, сервер может отправлять () две отдельные строки данных, но recv () может получить за один вызов частичную строку или полную строку плюсчастичная строка, поэтому вы должны буферизовать данные и извлечь из буфера только полные строки.
Надеюсь, это поможет ...