【发布时间】:2016-05-02 14:08:54
【问题描述】:
我正在从事 TCP/IP 项目(服务器和许多客户端)。我完全用 C 编写代码。我观察到,每当新客户端连接到服务器时,函数 accept() 都会为该特定连接返回一个数字。
newton = accept(mysocket, (struct sockaddr *)&dest, &socksize)
上面代码中的newcon对于不同的客户端是不同的。每当客户端断开连接时,分配给该断开连接的客户端的连接号就消失了。该号码根本不会分配给其他客户。如果服务器有很多用户,那么客户端连接和断开连接很多次。所以数字继续增加(从0到更大的数字)。如果服务器连接了数百万个客户端,我应该如何处理?有什么办法可以再次使用连接号?
【问题讨论】:
-
That number is not going to get assigned to another client at all.错误。 accept() 系统调用返回新连接的最低可用文件描述符。所以 fd(数字)被回收了。