用于接受来自特定ip java的连接的服务器套接字
我有一个serversocket运行在我的服务器的端口上,比如说7761,ip地址是10.2.110.43 现在有许多运行在不同服务器上的客户端正在等待端口7761上的连接,并将ascii格式的数据写入该端口 我希望serversocket验证客户端IP地址,然后接受来自客户端的连接用于接受来自特定ip java的连接的服务器套接字,java,sockets,serversocket,Java,Sockets,Serversocket,我有一个serversocket运行在我的服务器的端口上,比如说7761,ip地址是10.2.110.43 现在有许多运行在不同服务器上的客户端正在等待端口7761上的连接,并将ascii格式的数据写入该端口 我希望serversocket验证客户端IP地址,然后接受来自客户端的连接 有办法吗?我们在下面的代码中看到,我们不能在accept()之前检查对应方的地址,但在之后: 使用acceptedClients一组众所周知的InetAddress。如果您不想连接到JavaServerSocket
有办法吗?我们在下面的代码中看到,我们不能在
accept()
之前检查对应方的地址,但在之后:
使用
acceptedClients
一组众所周知的InetAddress。如果您不想连接到JavaServerSocket#accept()
,除非它来自特定的IP,您必须配置防火墙来实现这一点
建立连接后,您始终可以验证IP地址,如果它不是来自正确的IP,则立即将其关闭。如果您不介意在
安全管理器下运行,并且IP地址列表是静态的,则可以通过security.policy
文件完成此操作。只需将SocketPermission“accept”
授予您想要从中接受连接的IP地址即可。但是,按照另一个答案中的建议,在代码或防火墙中执行可能更可取。是什么阻止您验证代码中的客户端IP?我也一直在代码中执行此操作,但我认为您建议的这种方式实际上更干净。您还可以更轻松地配置范围,因为列表位于文件中(尽管从代码中执行类似操作也非常容易)。
Socket client = serverSocket.accept()
if( acceptedClients.contains( client.getInetAddress()) {
...
}
else {
client.close();
}