Java - ServerSocket IP地址

时间:2014-12-10 13:01:14

标签: java networking serversocket

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

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

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

4 个答案:

答案 0 :(得分:2)

冻结

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

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

Oracle Java Documentation - Querying Network Interface Addresses.

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

答案 1 :(得分:1)

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

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

NetworkInterface

Usage

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

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

System.out.println(serversocket.getRemoteSocketAddress().toString());