Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets 套接字TCP服务器_Sockets_Tcp_Network Connection - Fatal编程技术网

Sockets 套接字TCP服务器

Sockets 套接字TCP服务器,sockets,tcp,network-connection,Sockets,Tcp,Network Connection,我有一个关于网络连接的问题 例如,一个TCP服务器同时支持N个连接,每个连接都属于另一个客户端主机。问题是服务器需要多少套接字 谢谢我认为这是一个有效的问题,我不明白为什么会被否决 在我继续发言之前,必须作出重要区分。套接字是文件描述符,而端口是套接字的“标识符”。文件描述符/套接字归应用程序所有,因此可以将端口视为将连接/数据包路由到正确应用程序的方法 例如,web服务器(或任何其他基于TCP的服务器)的工作方式是,您有一个绑定到端口(例如80)的侦听套接字。当客户端连接到服务器时,操作系统会

我有一个关于网络连接的问题

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


谢谢

我认为这是一个有效的问题,我不明白为什么会被否决

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

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


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

1+;但是为了完整性:“应用程序可以创建的套接字(文件描述符)的限制由操作系统控制…”或者由应用程序本身控制。呵呵,是的,没错。不过,我认为最后一部分是不言自明的:)为了检查(并更改)操作系统设置的限制,您可以在Linux上使用ulimit-n。