服务器套接字接受来自特定ip java的连接

时间:2012-10-25 06:01:25

标签: java sockets serversocket

我的服务器上运行了一个服务器插槽,如我的服务器中的7761,ip说10.2.110.43 现在有许多客户端在不同的服务器上运行,等待端口7761上的连接,并以ascii格式将数据写入该端口。

我希望serversocket验证client-ipadress,然后接受来自客户端的连接。

有办法吗?

3 个答案:

答案 0 :(得分:5)

如果您不介意在SecurityManager下运行并且IP地址列表是静态的,您可以通过security.policy文件完成此操作。只需将SocketPermission "accept"仅授予您希望接受连接的IP地址。但是,在其他答案中建议的代码或防火墙中执行此操作可能更可取。

答案 1 :(得分:4)

我们在以下代码中看到,我们无法在 accept()之前检查对方的地址,但在之后

Socket client = serverSocket.accept()
if( acceptedClients.contains( client.getInetAddress()) {
   ...
}
else {
   client.close();
}

使用acceptedClients众所周知的InetAddress集合。

答案 2 :(得分:3)

如果您不希望连接到达Java ServerSocket#accept(),除非它来自特定IP,您必须配置防火墙才能执行此操作。

您可以在建立连接后始终验证IP地址,如果不是来自正确的IP,则立即关闭IP地址。