Пытаясь ознакомиться с библиотекой сокетов, у меня есть простая настройка сервера и клиента.По сути, я наткнулся и смог установить соединение и заставить сервер и клиент общаться друг с другом.Чтобы сделать его более интерактивным, у меня есть client.py, способный отправлять текст через командную строку.Кажется, что все работает должным образом (за исключением того, что серверное соединение разрывает соединение должным образом, если ввод клиента пуст), если я печатаю сообщение со стороны клиента, оно выплевывает мне обратно.В этом примере он также настроен на стороне сервера для печати текста.Я заметил, что серверная сторона не всегда «регистрирует» то, что отправляется клиентом.Я пытаюсь понять, почему это так.Будучи тестом, на самом деле это ни на что не влияет, я просто не могу понять, что происходит за кулисами.
РЕДАКТИРОВАТЬ: На самом деле, немного поиграв с ним, он появляется каждый раздругое сообщение выводится на консоль сервера.Я до сих пор не выяснил, почему это так
На стороне сервера:
#server.py
import socket
ss = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ss.bind(('127.0.0.1',5000))
ss.listen(5)
while True:
conn, addr = ss.accept()
with conn:
print ('Connected by', addr)
while True:
data = conn.recv(4096)
print (data)
if not data:
print ("nothing received from client")
ss.close()
break
На стороне клиента:
#client.py
import socket
server = 'localhost'
port = 5000
s = socket. socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('127.0.0.1', 5000))
s.send(bytes(b'Client has connected'))
while True:
msg = input()
s.send(bytes(input(msg),'utf-8'))
if not msg:
print ("Server should tear down connection...")
# s.close()
break