多个客户端与服务器处理

时间:2014-04-24 21:24:35

标签: sockets tcp

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

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

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

1 个答案:

答案 0 :(得分:1)

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

当使用像UDP这样的协议时,情况并非必须如此,除非你编写代码才能实现这一点。

线程?这取决于您如何构建服务器。根本不需要线程成为服务器的一部分,你可以(显然)只有一个连接就有多个线程。但是,一种常见的做法是, accept()返回的套接字交给新线程,是的。

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