仅从2个IP地址接受TCP连接

仅从2个IP地址接受TCP连接,tcp,winsock,winsock2,winsockets,Tcp,Winsock,Winsock2,Winsockets,我正在使用Winsock编写一个TCP服务器应用程序。连接到我的客户端(我没有源,因此无法进行更改)的行为如下:如果它连接,我关闭连接(因为它是不需要的客户端),它将立即重新连接。因此,如果有一个客户端想要连接到我,但我不想与之交谈(即,我称之为不想要的客户端),那么我将为我的accept()调用疯狂地旋转 我想找到一种方法来防止我的accept()调用发生疯狂的旋转。如果只有一个所需的客户端,我可以将侦听套接字绑定到该客户端的IP地址,而不是任何一个。但遗憾的是,我们需要的客户不止一个。据我所

我正在使用Winsock编写一个TCP服务器应用程序。连接到我的客户端(我没有源,因此无法进行更改)的行为如下:如果它连接,我关闭连接(因为它是不需要的客户端),它将立即重新连接。因此,如果有一个客户端想要连接到我,但我不想与之交谈(即,我称之为不想要的客户端),那么我将为我的accept()调用疯狂地旋转

我想找到一种方法来防止我的accept()调用发生疯狂的旋转。如果只有一个所需的客户端,我可以将侦听套接字绑定到该客户端的IP地址,而不是任何一个。但遗憾的是,我们需要的客户不止一个。据我所知,当一组IP地址的大小大于1时,不可能只允许从该组IP地址进行连接

我已经看过WSAAAccept了。不幸的是,这看起来只是将疯狂的旋转转变为回调


有没有一种方法可以拒绝不涉及accept()唤醒和返回(从而导致所有这些疯狂旋转)的尝试连接?

我相信您的问题在过去已经被问及stackoverflow。也许查看这两个线程可以帮助您解决问题:

如果您害怕遭受Dos攻击或担心性能问题,则accept将在的级别4上运行,这是一个相对较低的级别,负责处理与客户端的SYN-ACK协商,因此在accept()之后立即断开的来自外部的基本连接不会导致重要的性能问题


但是,如果您想完全接受两个IP地址,我认为您可能必须使用防火墙或原始套接字直接从TCP数据包中检索IP地址并自己接受连接,但我认为这将是一个巨大的时间损失。

您能用防火墙阻止或过滤该端口上的传入连接吗?