如何在Python3的套接字聊天室中发送和接收消息,而不会在键入时中断客户端?

问题描述

我当前正在尝试创建命令行客户端-服务器模型聊天室,但是,我遇到了一个问题,问题是,如果其他人在聊天室中讲话,它将覆盖其他客户端的输入正在尝试键入,由于多种原因,这太可怕了,尤其是当所述服务器变大时。我尝试了多线程,认为那可以解决我的问题,但事实并非如此。 这是我当前正在使用的客户端代码

import socket
import threading
while_loop = True
def recv():
    while while_loop == True:
        server_message = client.recv(2048)
        print(server_message.decode('utf-8'))
rt = threading.Thread(target=recv,args=())
def send():
    while while_loop == True:
        message_to_send = input(">>> ")
        client.sendall(bytes(message_to_send,'utf-8'))
st = threading.Thread(target=send,args=())
rt.start()
st.start()
st.join()
rt.join()

有没有一种方法可以使我(无需保持输入)实时发送和接收消息? 谢谢您的宝贵时间,谢谢。

解决方法

我知道input()会冻结输出,直到获得输入为止,因此请使用Pynput或键盘。示例:

import keyboard
import time

while True:
   time.sleep(1)
   print("Listening for input...")
   print(keyboard.read_key())

您可能需要使用另一个线程来收集输入,然后发送: enter image description here