Python接收消息流

Python接收消息流,python,sockets,python-3.x,Python,Sockets,Python 3.x,您好,我的问题是如何让客户端直接从服务器接收消息,而用户可以同时输入消息? 因为有许多消息是从服务器接收并合并在一起的 有很多方法可以做到这一点: 使用模块中的功能之一,例如:。 , . 这些功能允许 您需要检查一组文件描述符(包括套接字描述符) 对于I/O事件-可读、可写、错误。您的代码响应这些 通过阅读或书写适当的事件 使用支持异步I/O的框架,例如。 它位于Python标准库中。或第三方的,如 扭曲、龙卷风等 使用线程。有一个线程来处理用户的I/O,还有一个 第二个(或更多)线程来处理每

您好,我的问题是如何让客户端直接从服务器接收消息,而用户可以同时输入消息?
因为有许多消息是从服务器接收并合并在一起的

有很多方法可以做到这一点:

  • 使用模块中的功能之一,例如:。 , . 这些功能允许 您需要检查一组文件描述符(包括套接字描述符) 对于I/O事件-可读、可写、错误。您的代码响应这些 通过阅读或书写适当的事件
  • 使用支持异步I/O的框架,例如。 它位于Python标准库中。或第三方的,如 扭曲、龙卷风等
  • 使用线程。有一个线程来处理用户的I/O,还有一个 第二个(或更多)线程来处理每个网络连接

对每种方法的详细描述都超出了SO的范围,但请随意询问更多关于具体细节或问题的问题。

您必须使用线程或异步框架,如asyncio或twisted。我认为即使使用线程,您也无法在命令行上很好地做到这一点。假设你开始输入“你好吗?”然后你的朋友给你发“你好”。然后,命令提示符将显示为“message:He接收到的消息:what's up llo you's?”是的,我知道,但是如果我从服务器收到了许多消息,我如何才能将其溢出?
# part
def my():
    while True:
        a = input("message  :")
        a1 = s.send(str.encode(a))
        a2 = bytes.decode(s.recv(1024))
        print(" The received message : ",a2)