Java - ServerSocket IP地址

问题描述 投票:1回答:4

打开服务器套接字后,我想访问其IP地址(其他人可以用来连接)。我打电话的时候

ServerSocket seso = new ServerSocket(port);
System.out.println(seso.getInetAddress());

它显示(0.0.0.0/0.0.0.0),这只是网络掩码。我想得到的是套接字实际绑定的ip,例如130.75.22.12(或类似的东西)。

java networking serversocket
4个回答
2
投票

冻结

看来你正在寻找沙漠中的水:)。

你无法获得监听计算机中所有接口或任何ip地址的ServerSocket的ip地址。(在设备或程序连接到ServerSocket之前)。为了查询所有网络接口的ip地址jz,请点击链接进行研究并使用这些IP地址来实现您的需求..

Oracle Java Documentation - Querying Network Interface Addresses.

它似乎对每个人都有帮助。


1
投票

ServerSocket绑定到一个接口。您可以使用显示socket.getInetAddress()0.0.0.0获取此界面。这意味着您的服务器正在侦听您可用的所有接口,因此您(通常)无法获取服务器正在侦听的单个IP地址,因为您可能拥有多个。

有关如何获取网络接口的更多信息:

NetworkInterface

Usage


0
投票

使用Socket sock = seso.accept();它将侦听您给出的端口上的套接字。获得连接后,您可以获取sock.getInetAddress()以获取IP和端口


0
投票

对于本地地址,您可以使用,

System.out.println(Inet4Address.getLocalHost().getHostAddress());

对于您使用的服务器地址,

System.out.println(serversocket.getRemoteSocketAddress().toString());
© www.soinside.com 2019 - 2024. All rights reserved.