2011-07-10 44 views
0

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

+0

您使用的是SFML SocketTCP和SocketUDP类吗? – andrewdski

回答

2

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

在UDP中没有连接,但有recvfrom(2),就像accept(2)一样,给你对方的地址。所以你可以忽略你不喜欢的同伴。

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

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

+0

好的,所以请求检查IP后? – Eli

+0

是的,在'accept()'之后,检查返回的IP并关闭连接,如果IP列入黑名单(或未列入白名单)。 –

+0

UDP怎么样?我的意思是,用户可以用大量数据来轰炸我的服务器,而且我的带宽会变得疯狂。 – Eli

0

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

+0

好的,请求检查IP后? – Eli

+0

是的(用一些想法:getperrname),那肯定会在你的情况下工作。 –

+0

UDP怎么样?我的意思是,用户可以用大量数据来轰炸我的服务器,而且我的带宽会变得疯狂。 – Eli

0

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

相关问题