4

C 中的套接字是否提供任何方式来限制基于 IP 的套接字的传入连接数?

例如,为了防止一个客户端 IP 发送垃圾邮件连接,有没有办法限制一个 IP 可以连接到套接字的次数?

或者这样的东西必须定制吗?

4

3 回答 3

1

标准套接字 API 中没有任何内容,没有。使用标准 API,服务器代码唯一能做的就是accept()客户端连接,检查其 IP,然后在需要时关闭连接。

对于 Microsoft 的 WinSock API,该WSAAccept()函数确实有一个回调,在从服务器队列接受连接之前调用该回调。回调函数可以决定接受连接、拒绝连接或将其留在队列中。

于 2012-11-01T22:49:49.527 回答
1

套接字中没有类似的东西。您需要自定义解决方案,最好考虑在防火墙中执行此操作。

于 2012-11-01T19:46:41.777 回答
1

我觉得您正在谈论的真正意图是限制,即针对特定客户端/连接,在给定时间内仅允许固定数量的数据包。这听起来比允许/禁止更多连接更现实的使用场景。

大多数现代语言都提供某种支持,例如 java 或 c#,但不提供 c。

然而,这里有一个优雅的方法来实现它。我自己已经在生产代码中使用过它。

实施节流

于 2012-11-01T19:59:03.977 回答