限制基于IP的传入TCP连接

时间:2012-11-01 19:43:12

标签: c sockets networking tcp

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

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

或者这样的事情必须定制吗?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

我觉得你所谈论的真正意图是节流,即对于特定的客户端/连接,在给定时间内只允许固定数量的数据包。这听起来比允许/禁止更多连接更实际的使用场景。

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

但是,这是一种实现它的优雅方法。我自己在生产代码中使用过它。

implementing throttling

答案 2 :(得分:1)

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

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