Mat*_*nge 31 java sockets networking
我有一个Java服务器,使用ServerSocket打开一个套接字(使用Thrift).该服务器在Obj-c中的本地机器上有一个客户端,它与Java服务器通信.一切都发生在localhost上.现在java服务器在网络上也是可见的,我希望java服务器只能在localhost上访问.否则,这是一个潜在的安全漏洞,当防火墙警告他们时,它会吓跑用户.
我尝试使用InetSocketAddress('localhost',9090)创建服务器套接字,但似乎没有任何效果.我怎样才能将这个东西限制在localhost?
Mat*_*ías 40
new ServerSocket(9090, 0, InetAddress.getByName(null));
Run Code Online (Sandbox Code Playgroud)
InetAddress.getByName(null) 指向环回地址(127.0.0.1)
而这里的地方说的Javadoc
Geo*_*edy 21
尝试
new ServerSocket(9090, 0, InetAddress.getByName("localhost"))
Run Code Online (Sandbox Code Playgroud)
构造函数的最后一个参数指定将侦听套接字绑定到的地址.
Fab*_*nge 21
让我来看一个只接受环回设备的替代解决方案.所有其他"localhost"解决方案将使Java选择一个接口.
new ServerSocket(9090, 0, InetAddress.getLoopbackAddress());
Run Code Online (Sandbox Code Playgroud)
这是从Java 7开始提供的,甚至没有抛出 UnknownHostException