如何创建仅本地主机的Java套接字?

2022-09-01 04:52:09

我有一个Java服务器,它使用ServerSocket打开一个套接字(使用Thrift)。此服务器在 Obj-c 中的本地计算机上有一个与 Java 服务器通信的客户机。一切都发生在本地主机上。现在java服务器在网络上也是可见的,我希望java服务器只能在localhost上访问。否则,这是一个潜在的安全漏洞,当用户的防火墙警告他们时,它会吓坏用户。

我尝试使用InetSocketAddress('localhost',9090)创建服务器套接字,但这似乎没有效果。我如何将这个东西限制为本地主机?


答案 1

摘自另一个问题:

new ServerSocket(9090, 0, InetAddress.getByName(null));

InetAddress.getByName(null)指向环回地址 (127.0.0.1)

这是Javadoc,它说


答案 2

让我插一个替代解决方案,它只接受环回设备。所有其他“本地主机”解决方案将使Java选择一个接口。

new ServerSocket(9090, 0, InetAddress.getLoopbackAddress());

这从Java 7开始就可用,甚至不会抛出UnknownHostException


推荐