Сообщения между клиентами не выводятся пока не произойдёт отправка
На socket в Python реализую обмен сообщениями между пользователям, но в процессе обмена из-за вечного цикла не происходит вывод сообщения и одного из клиентов, пока он не отправит сообщение
HEADER_LENGTH = 10
HOST_IP = input('Please, type IP of server')
HOST = HOST_IP,10000
username = input("Please type a username ").encode('UTF-8')
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(HOST)
s.setblocking(0)
header = f"{len(username):<{HEADER_LENGTH}}".encode('UTF-8')
s.send(header+username)
def send_msg():
try:
while True:
print('Please, write a message')
msg = input().encode('UTF-8')
if msg: #если на вход поступило сообщение, то кодируем его и отправляем
msg_header = f"{len(msg):<{HEADER_LENGTH}}".encode('UTF-8')
s.send(msg_header+msg)
print(msg_header, msg)
except IOError as _ex:
pass
def recv_msg():
while True: #Если нам поступает сообщение, содержащее заголовок, то принимаем его, показываем само сообщение и username того, кто отправил
user_header =s.recv(HEADER_LENGTH)
if not len(user_header):
sys.exit()
user_lenght = int(user_header.decode('UTF-8').strip())
username = s.recv(user_lenght)
msg_header = s.recv(HEADER_LENGTH)
msg_length = int(msg_header.decode('UTF-8').strip())
data = s.recv(msg_length).decode('UTF-8')
print(f"New message from {username.decode('UTF-8')} - {data}")