У меня есть два скрипта Python, один TCP-сервер отправляет данные (со скоростью 1/256 раз в секунду) и TCP-клиент получает данные. В клиентском скрипте я печатаю длину полученных данных.
Я отправил строку "5.8" с сервера (таким образом, данные длины 3).
Когда клиент и сервер находятся на одном компьютере:
Длина полученных данных всегда равна 3.
Когда клиент и сервер находятся на разных компьютерах в одной локальной сети:
Длина данных отличается, но составляет около 39 (в 13 раз больше отправленных данных).
Есть ли возможное объяснение этому расхождению?
Я думаю, что сеть, добавляющая такую большую задержку, маловероятна, потому что командная строка «ping» печатает с задержкой не более 2 мс с наибольшим объемом данных.
ВАЖНО: я использую Python 2.7.
import socket
def server():
host = 'localhost' # replace with IP address in case client is on another machine
port = 5051
s = socket.socket()
s.bind((host, port))
s.listen(1)
client_socket, adress = s.accept()
while True:
client_socket.send('a'.encode())
client_socket.close()
if __name__ == '__main__':
server()
import socket, random, time
def client():
host = 'localhost' # replace with IP address in case client is on another machine
port = 5051
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s_err = s.connect_ex((host, port))
print(s_err)
while True:
data = s.recv(2048)
print(len(data)) # returns different values depending on client location
s.close()
if __name__ == '__main__':
client()