Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于接受来自特定ip java的连接的服务器套接字_Java_Sockets_Serversocket - Fatal编程技术网

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

用于接受来自特定ip java的连接的服务器套接字,java,sockets,serversocket,Java,Sockets,Serversocket,我有一个serversocket运行在我的服务器的端口上,比如说7761,ip地址是10.2.110.43 现在有许多运行在不同服务器上的客户端正在等待端口7761上的连接,并将ascii格式的数据写入该端口 我希望serversocket验证客户端IP地址,然后接受来自客户端的连接 有办法吗?我们在下面的代码中看到,我们不能在accept()之前检查对应方的地址,但在之后: 使用acceptedClients一组众所周知的InetAddress。如果您不想连接到JavaServerSocket

我有一个serversocket运行在我的服务器的端口上,比如说7761,ip地址是10.2.110.43 现在有许多运行在不同服务器上的客户端正在等待端口7761上的连接,并将ascii格式的数据写入该端口

我希望serversocket验证客户端IP地址,然后接受来自客户端的连接


有办法吗?

我们在下面的代码中看到,我们不能在
accept()
之前检查对应方的地址,但在之后:


使用
acceptedClients
一组众所周知的InetAddress。

如果您不想连接到Java
ServerSocket#accept()
,除非它来自特定的IP,您必须配置防火墙来实现这一点


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

如果您不介意在
安全管理器下运行,并且IP地址列表是静态的,则可以通过
security.policy
文件完成此操作。只需将SocketPermission
“accept”
授予您想要从中接受连接的IP地址即可。但是,按照另一个答案中的建议,在代码或防火墙中执行可能更可取。

是什么阻止您验证代码中的客户端IP?我也一直在代码中执行此操作,但我认为您建议的这种方式实际上更干净。您还可以更轻松地配置范围,因为列表位于文件中(尽管从代码中执行类似操作也非常容易)。
Socket client = serverSocket.accept()
if( acceptedClients.contains( client.getInetAddress()) {
   ...
}
else {
   client.close();
}