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