Новичок в обучении программированию сокетов на python

#python #sockets

Вопрос:

Я создал сервер и клиент для подключения. вот код сервера

 import socket s = socket.socket()  print("Socket has been created")  s.bind(('localhost',9998))  s.listen(3)  print('Waiting for connections')  while True:  c, addr = s.accept()  age = s.accept()  name = c.recv(1024).decode()  age = c.recv(1024).decode()  print("Connected with ",addr, name, age)  c.send(bytes('Welcome to server 2', 'utf-8'))  c.close()  

вот код клиента

 import socket  c = socket.socket()  c.connect(('localhost',9998))  name = input("Enter a name") age = input("Enter your age") c.send(bytes(name,'utf-8')) c.send(bytes(age, 'utf-8'))  print(c.recv(1024).decode())  

он не отправляет сообщение «Добро пожаловать на сервер» клиенту и не печатает IP имя возраст в консоли сервера . Что я делаю не так?

Комментарии:

1. Ваш сервер звонит .accept() дважды; второй вызов не вернется, пока второй клиент не попытается подключиться. Обратите внимание, что ваш код в корне нарушен — вы используете сокет TCP (по умолчанию), который является потоковым протоколом — нет абсолютно никакой связи между фрагментами данных, переданными .send() на одном конце, и фрагментами данных, полученными .recv() на другом. Вполне вероятно , что обе части клиентских данных будут считаны первой .recv() , а вторая .recv() затем зависнет в ожидании дополнительных данных. Вам нужны разделители или предшествующие значения длины.