我有一个应用程序,它有一个网络服务器,用户将从他们的家庭 LAN 访问该服务器。目前我有两种获取设备 IP 的方法,但我不知道哪一种更可能是正确的。
我的常规方式:
List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
for (NetworkInterface intf : interfaces) {
List<InetAddress> addrs = Collections.list(intf.getInetAddresses());
for (InetAddress addr : addrs) {
if (!addr.isLoopbackAddress()) {
String sAddr = addr.getHostAddress().toUpperCase();
我的替代方法:
WifiInfo connectionInfo = wifiMgr.getConnectionInfo();
int ip = connectionInfo.getIpAddress();
我认为这一直工作正常,但我确实有一些关于它的统计数据,看起来这两个 ip 似乎只有大约 4% 的时间不同。
此外,我刚刚在 Chromebook 上试用了我的应用程序,替代方法实际上是正确的方法,而不是正常方法。
那么我怎么知道哪种方式更好或者是否有更好的选择?
最佳答案
它们非常不可靠,因为您必须处理很多边缘情况。
我更喜欢使用免费的外部服务;进行网络调用并获得适当的面向公众的 IP。尝试 https://www.ipify.org/
关于android - 获取运行我的应用程序的 Android 设备的 IP 的最可靠方法是什么?不是公网IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50706427/