如何使用 Java 获取计算机的 LAN IP 地址?我想要连接到路由器和网络其余部分的 IP 地址。
我试过这样的:
Socket s = new Socket("www.google.com", 80);
String ip = s.getLocalAddress().getHostAddress();
s.close();
这似乎在某些情况下有效,但有时它会返回环回地址或完全不同的东西。此外,它需要互联网连接。
有没有人有更准确的方法来做到这一点?
编辑: 认为在这里提问比在评论中提问更好..
如果你有很多接口(interface)怎么办?例如,一个用于电缆,一个用于 wifi 和一个用于虚拟盒子等等。是不是无法真正看到哪一个连接到网络?
最佳答案
试试 java.net.NetworkInterface
import java.net.NetworkInterface;
...
for (
final Enumeration< NetworkInterface > interfaces =
NetworkInterface.getNetworkInterfaces( );
interfaces.hasMoreElements( );
)
{
final NetworkInterface cur = interfaces.nextElement( );
if ( cur.isLoopback( ) )
{
continue;
}
System.out.println( "interface " + cur.getName( ) );
for ( final InterfaceAddress addr : cur.getInterfaceAddresses( ) )
{
final InetAddress inet_addr = addr.getAddress( );
if ( !( inet_addr instanceof Inet4Address ) )
{
continue;
}
System.out.println(
" address: " + inet_addr.getHostAddress( ) +
"/" + addr.getNetworkPrefixLength( )
);
System.out.println(
" broadcast address: " +
addr.getBroadcast( ).getHostAddress( )
);
}
}
关于java - 如何使用Java获取客户端的LAN IP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2845279/