我的游戏服务器现在接受每个人的套接字。但是我怎样才能阻止特定的 IP 受到攻击呢?你知道,如果他们想让我的服务器崩溃什么的。我正在使用 SFML 库,C++。
问问题
230 次
3 回答
2
使用 TCP,当您的程序(或您正在使用的库)调用accept(2)
时,第二个参数是一个输出,它告诉您客户端的地址。
使用 UDP 没有连接,但是有recvfrom(2)
,就像 一样accept(2)
,可以为您提供对等方的地址。所以你可以忽略你不喜欢的同伴。
或者您可以在某种防火墙设备后面运行您的服务器并在那里添加规则,或者使用 iptables 或类似的软件防火墙作为主机上的软件防火墙。
在 SFML 中,您有SocketTCP::Accept
和SocketUDP::Receive
,如果您将空地址作为参数传递,这两者都会为您提供对等方的地址。
于 2011-07-10T16:51:12.330 回答
0
我不知道阻止某些 ip 的任何具体方法,但您肯定可以在确定原始 ip 后拒绝请求(在您的情况下可能是连接请求)。维护一个被阻止的 ip(或黑名单 ip)列表(使其可配置以便更容易添加/删除),如果请求来自黑名单 ip 之一,则拒绝该请求。
于 2011-07-10T16:51:44.213 回答
0
在 Windows 下,WinSock 2.x 有一个可选的回调参数WSAAccept()
,可用于有条件地接受/拒绝连接请求。客户端 IP/端口是可用参数之一。
于 2011-07-14T22:10:23.183 回答