打开服务器套接字后,我想访问其IP地址(其他人可以用来连接)。当我打电话
ServerSocket seso = new ServerSocket(port);
System.out.println(seso.getInetAddress());
显示(0.0.0.0/0.0.0.0),这只是网络掩码。我想得到的是套接字实际绑定的ip,例如130.75.22.12(或类似的东西)。
答案 0 :(得分:2)
冻结
看来你正在寻找沙漠中的水:)。
您无法获取监听计算机中所有接口或任何IP地址的ServerSocket
的IP地址。(在设备或程序连接到ServerSocket
之前)。所以对于查询所有网络接口的IP地址jz按照链接进行研究,并使用这些IP地址来实现您的需求..
Oracle Java Documentation - Querying Network Interface Addresses.
它似乎对每个人都有帮助。
答案 1 :(得分:1)
ServerSocket
绑定到接口。您可以使用显示socket.getInetAddress()
的{{1}}获取此界面。这意味着您的服务器正在侦听您可用的所有接口,因此您(通常)无法获得服务器正在侦听的单个IP地址,因为您可能拥有多个。
有关如何获取网络接口的更多信息:
答案 2 :(得分:0)
使用Socket sock = seso.accept();它将侦听您给出的端口上的套接字。获得连接后,您可以获取sock.getInetAddress()以获取IP和端口
答案 3 :(得分:0)
对于您可以使用的本地地址,
System.out.println(Inet4Address.getLocalHost().getHostAddress());
对于您使用的服务器地址,
System.out.println(serversocket.getRemoteSocketAddress().toString());