仅接受来自特定IP的套接字

时间:2011-07-10 16:42:55

标签: c++ tcp network-programming udp sfml

我的游戏服务器现在接受来自每个人的套接字。但是如何阻止特定IP攻击呢?你知道,如果他们想要崩溃我的服务器或什么的。我正在使用SFML库,C ++。

3 个答案:

答案 0 :(得分:2)

使用TCP,当您的程序(或您正在使用的库)调用accept(2)时,第二个参数是一个输出,它告诉您客户端的地址。

使用UDP没有连接,但有recvfrom(2),就像accept(2)一样,为您提供对等方的地址。所以你可以忽略你不喜欢的同伴。

或者您可以在某种防火墙设备后面运行您的服务器并在那里添加规则,或者在主机上使用iptables或类似的软件防火墙。

在SFML中,您有SocketTCP::AcceptSocketUDP::Receive,如果您将空地址作为参数传递,则两者都会为您提供对等地址。

答案 1 :(得分:0)

我不知道阻止某些ips的任何具体方法,但在确定原始ip后,您肯定会拒绝该请求(可能是您的情况下的连接请求)。维护一个被阻止的ip列表(或BlackListed ip)(使其可配置以便于添加/删除)并拒绝该请求,如果它来自黑名单的ips之一。

答案 2 :(得分:0)

在Windows下,WinSock 2.x具有WSAAccept()的可选回调参数,可用于有条件地接受/拒绝连接请求。客户端IP /端口是可用参数之一。