限制我在 WinCE 上可以接受 I() 的 TCP 连接数

Limit the number of TCP connection I can acceptI() on WinCE

我的要求是"Limit the number of sockets I can accept() on WinCE, let's say 60 sockets".

因为我遇到了问题:

  1. 我的 WinCE 嵌入式系统处理来自 TCP 的请求的资源有限。所以我必须限制TCP连接数。

  2. 我试过这个: 如果我发现我已经接受了 60 个套接字,则不调用 accept()。会有严重的问题。该设备将变得非常慢。我正在尝试调试它。

  3. 如果我先accept(),再close(),客户端会报错;因为客户端认为如果服务器首先接受 TCP 连接然后立即关闭它是错误的。

任何人都可以告诉我如何做到这一点。

我试图阅读/WINCE/PRIVATE文件夹中的源代码,我只能追踪到"proxy.SOMETHING()"。好像找不到windows套接字的代码。 如果我说错了,请指正。

如果你不调用 accept() 连接仍然建立在较低的 TCP/IP 级别,让另一端等待你的接受(然后可能会重试)。即使您不调用 accept(),您仍然会对每个连接请求进行一些活动,这可能会减慢您的系统速度。 您应该有一个套接字绑定到传入端口(和可选地址),并有一个挂起的侦听调用。只要您执行 listen(),您就是在告诉系统处理传入的连接请求并将它们报告给您以获取 accept()。如果您关闭该套接字并且不对其执行任何 listen() (最好关闭它,因为这将删除大部分连接管理内容),那么系统负载应该会减少。另一方面,客户端将报告您的服务器无法访问,这可能是一个问题,因为他们将无法理解服务器是真的宕机了还是只是被请求加载了。