Асинхронный ввод python

Рейтинг: 0Ответов: 0Опубликовано: 29.01.2023

В данном случае я пытаюсь реализовать консольный чат, но ввод сообщения работает только по очереди, из-за того что input() и принятие сообщения блокируют последующие действия кода.

server.py:

import socket

new_socket = socket.socket()
new_socket.bind(("IP", 50))
new_socket.listen()

print('Сервер запущен!')
name = input('Введите своё имя: ')
conn, add = new_socket.accept()

client = (conn.recv(1024)).decode()
print(client + ' присоединился!')
conn.send(name.encode())

while True:
    message = input('Я: ')
    conn.send(message.encode())
    message = conn.recv(1024)
    message = message.decode()
    print(f'{client}: {message}')

client.py:

import socket

socket_server = socket.socket()

name = input('Введите имя: ')
socket_server.connect(("IP", 50))
socket_server.send(name.encode())
socket_name = socket_server.recv(1024)
server_name = socket_name.decode()
print(f'{server_name} присоединился')

while True:
    message = (socket_server.recv(1024)).decode()
    print(f'{server_name}: {message}')
    message = input('Я: ')
    socket_server.send(message.encode())

Как можно реализовать асинхронный ввод с клавиатуры и принятие сообщения?

Ответы

Ответов пока нет.