Java-ServerSocket IP地址

Java-ServerSocket IP地址,java,networking,serversocket,Java,Networking,Serversocket,打开服务器套接字后,我想访问它的IP地址(其他人可以用来连接的IP地址)。当我打电话时 ServerSocket seso = new ServerSocket(port); System.out.println(seso.getInetAddress()); 它显示(0.0.0.0/0.0.0.0),这只是网络掩码。我想要得到的是套接字实际绑定到的ip,例如130.75.22.12(或类似的东西)。使用socket sock=seso.accept();它将侦听您给定端口上的套接字。获得连接

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

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

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

使用socket sock=seso.accept();它将侦听您给定端口上的套接字。获得连接后,您可以获取sock.getInetAddress()以获取ip和端口服务器套接字
绑定到一个接口。您可以通过显示
0.0.0.0
socket.getInetAddress()
获取此接口。这意味着您的服务器正在侦听所有可用接口,因此您(通常)无法获得服务器正在侦听的单个IP地址,因为您可能有多个IP地址

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


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

System.out.println(Inet4Address.getLocalHost().getHostAddress());
对于您使用的服务器地址

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

你似乎在沙漠中寻找水源:)

您无法获取侦听计算机中所有接口的
ServerSocket
的ip地址,也无法从任何ip地址获取该地址。(在设备或程序连接到
ServerSocket
之前)。因此,要查询所有网络接口的ip地址,jz请按照链接进行研究,并使用这些ip地址来实现您的需要


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

我知道一台计算机(或服务器程序)可以同时监听多个IP(如LAN、wireles等)。不过我还是想知道是哪个。我可能是瞎子,但如何迭代ServerSocket正在侦听的IP地址?是的,为此您可以使用LocalAddress。结果是seso.getLocalSocketAddress().toString()“0.0.0.0/0.0.0.0:22”。。。同样,只有接口掩码。我要寻找的是已经创建的ServerSocket的真实现有ip。当您使用另一个程序通过客户端socket连接它时,它将返回,例如,在您编写的另一个类中,socket sock=新套接字(IPAddressOfMachine whereServerIsRunning,portofserver);是的,但那不是我想知道的。。。我想在同一个应用程序中创建ServerSocket后,直接找出它的IP,例如用于日志记录、窗口标题、将它发送到元服务器或其他目的。看起来比我想的更复杂。谢谢。。。我曾希望可以直接在ServerSocket实际侦听的IP地址上进行迭代。因此,我必须将网络接口地址列表中的信息与seso.getInetAddress()结合起来,该列表显示托管ServerSocket的计算机的所有可能地址?