gpt4 book ai didi

java - 如何使用Java获取客户端的LAN IP?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:01:20 25 4
gpt4 key购买 nike

如何使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com