【发布时间】:2012-06-09 15:05:57
【问题描述】:
我必须监听传入的连接,但同时我必须接收来自已经连接的客户端的消息。但是listen(1) 使套接字等待,所以我无法接收它们。该怎么办? (我必须在客户端发送消息后立即获取消息)
【问题讨论】:
-
您的问题不够具体。您使用的是什么类型的套接字?查看一些 UDP 或 TCP 套接字教程,了解您想了解的内容
我必须监听传入的连接,但同时我必须接收来自已经连接的客户端的消息。但是listen(1) 使套接字等待,所以我无法接收它们。该怎么办? (我必须在客户端发送消息后立即获取消息)
【问题讨论】:
简而言之,您有 3 个主要选择:
为每个客户端打开一个线程,在您accept() 之后生成,并在此上下文中运行一个循环,即read() => .... => write()
在每个客户端的 accept() 之后运行一个使用 select() 的主循环,并自行处理调度。
最佳选择 - 使用异步网络框架,如 tornado、gevent、twisted 或其他一些以透明方式处理此问题。
【讨论】: