套接字TCP服务器

时间:2013-12-25 09:12:50

标签: sockets tcp network-connection

我对网络连接有疑问

例如,一个TCP服务器同时支持N个连接,每个连接都属于其他客户端主机。问题是服务器需要多少个套接字?

由于

1 个答案:

答案 0 :(得分:2)

我认为这是一个有效的问题,不明白为什么它被低估了。

在继续之前,必须做出重要的区分。套接字是文件描述符,而端口是套接字的“标识符”。文件描述符/套接字由应用程序拥有,因此可以将端口视为将连接/数据包路由到正确应用程序的方法。

例如,Web服务器(或任何其他基于TCP的服务器)的工作方式是,您有一个绑定到端口的侦听套接字(例如80)。当客户端连接到服务器时,操作系统会自动创建一个新套接字(此套接字是由例如accept()返回的套接字)。此套接字绑定到与侦听套接字相同的本地IP和端口,但具有不同的远程IP /端口。操作系统存储此映射并将属于此映射的数据包路由到新套接字。

所以问题的答案是只需要一个侦听套接字,但是当客户端连接时会创建新的套接字(并在断开连接时删除)。套接字(文件描述符)的限制比应用程序可以创建的限制由操作系统控制。