2016-02-29 57 views
0

是否可以在接受连接之前检查服务器/接受方的远程主机的IP?在接受asio之前检查IP :: IP :: TCP套接字

其背后的原因是:我有ň客户经常试图连接到一台服务器,我不希望不断有ň打开的连接。相反,我希望能够选择我想要连接的客户端,并只在需要时接受这些连接。

不幸的是,由于防火墙和策略的原因,连接需要从客户端发起,所以采用相反的方式。

从TCP的角度来看,这甚至是可能的吗?如何在asio中完成?

+1

启动连接的客户端听起来就像建立连接的正常方式。至于你的问题,没有任何标准的方法来窥探传入的连接是队列,只有当你接受连接,你才能得到它的地址。它也是解除连接的唯一标准方式,您不能“关闭”传入队列中的连接。 –

+0

好的,谢谢,那么我需要想办法做到这一点。 – user66875

+0

@ user66875可能不是。您可以只接受连接,获取远程IP地址(请参阅[这里](http://stackoverflow.com/questions/601763/how-to-get-ip-addresss-of-boostasioiptcpsocket))并关闭该连接你不喜欢那个客户。 – nos

回答

0

有两种方法:

  1. 您接受连接,并得到同行的地址,检查并关闭它。您也可以借此机会告诉客户端服务器正忙。然而,这一点可能会打开大量连接请求的攻击媒介。

  2. 您可以在运行时使用类似fail2ban的方式修改防火墙。

顺便说一下,是什么让你不愿意持有N打开连接?现代系统可以处理数十万甚至数百万个连接而没有问题。

+0

谢谢,我会尽力实施1)。我不知道打开这么多的连接不会成为性能方面的问题 – user66875