Асинхронный ввод python
В данном случае я пытаюсь реализовать консольный чат, но ввод сообщения работает только по очереди, из-за того что 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())
Как можно реализовать асинхронный ввод с клавиатуры и принятие сообщения?
Источник: Stack Overflow на русском