我正在用python进行套接字编程。我对s.listen(5)和多线程的概念有些困惑。
据我所知,使用s.listen(5)以便服务器最多可以侦听5个客户端。
还使用多线程,以便服务器可以连接到许多客户端。
请解释一下我们在哪种情况下使用多线程?
预先感谢
答案 0 :(得分:0)
您将需要使用多线程处理多个客户端。接受连接后,您将收到一个新的套接字实例,该实例代表与该新客户端的连接。现在假设您正在聊天,您需要从一个客户端接收数据并将其发送给所有连接的客户端,如果您不使用多线程,则需要使用以下方法实现非性能逻辑一个单一的处理循环,以使已连接的客户端读取每个客户端,然后将所有数据发送给它们,但是您还会遇到另一个问题,因为侦听功能会造成IO中断,直到您不使用新客户端尝试进行连接为止非阻塞插座。一切都与架构,性能和良好实践有关。
点击链接https://techdifferences.com/difference-between-multiprocessing-and-multithreading.html,可以很好地了解多线程。
答案 1 :(得分:0)
据我所知,使用s.listen(5)以便服务器最多可以侦听5个客户端。
不。 s.listen(5)
声明了5个待办事项的数量。大于表示侦听套接字将在接受5个连接请求之前将其置于未决状态。每次接受连接请求时,它都不再存在于待处理的待办事项中。因此,可接受的连接的数量没有限制(服务器资源除外)。
多线程的常见用法是在接受连接以处理该连接之后启动新线程。一种替代方法是在单个线程上使用select
来处理同一线程中的所有连接。在多线程变得普遍之前,它曾经是规则,但是它可能导致更复杂的程序。