作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个应用程序,它有一个网络服务器,用户将从他们的家庭 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/
无法从谷歌计算引擎获取 Kibana 的公共(public) IP。表示无法访问该站点,但如果我更改 elasticsearch.yml,则 Elasticsearch 通过公共(public) IP
我是一名优秀的程序员,十分优秀!