【问题标题】:multiple clients with server handling具有服务器处理的多个客户端
【发布时间】:2014-04-24 21:24:35
【问题描述】:

我刚刚开始学习套接字和客户端/服务器。我不清楚以下概念。假设非阻塞套接字。

假设我有一个服务器应用程序,我有 1000 个客户端试图与之交谈,我认为这是非常现实的。假设客户端和服务器通过套接字进行通信。 1-这是否意味着每个客户端都有一个单独的套接字连接? (我们是有 1000 个套接字,还是一个套接字有 1000 个连接?

2- 每个套接字连接是否都属于一个单独的线程?如果是,我们如何限制线程数量,因为它可能会失控?

【问题讨论】:

  • 这个问题很基础。一般研究对您的帮助比这里的任何答案都多。

标签: sockets tcp


【解决方案1】:

假设您使用的是 TCP,那么每个连接都通过一个单独的套接字。操作系统使用文件描述符分配它们。

当使用像 UDP 这样的协议时,不必如此,除非您编写代码来实现它,否则不会如此。

线程?这取决于您如何构建服务器。您根本不需要线程成为服务器的一部分,并且您可以(显然)通过单个连接拥有多个线程。然而,一种常见的做事方式accept()返回的套接字交给一个新线程,是的。

如果您对线程不感兴趣——例如,如果服务器只执行非常快速的任务并且创建线程只是在浪费时间——您可以使用select() 来轮询套接字并确定哪些需要注意。一些服务器结合使用线程和轮询来尝试最大化吞吐量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    • 2015-02-24
    相关资源
    最近更新 更多