我有找到DHCP地址和主机地址的方法。 如何查找分配给我的设备的动态IP地址。 我可以从http://www.ip2location.com/default.aspx
获取地址如何在设备中获取此IP?
答案 0 :(得分:9)
ipString = String.format(
"%d.%d.%d.%d",
(ip & 0xff),
(ip >> 8 & 0xff),
(ip >> 16 & 0xff),
(ip >> 24 & 0xff));
答案 1 :(得分:4)
您可以使用外部服务器来请求您的IP,例如@Midday建议。这可能是最简单的解决方案。问题是您必须依赖网络和远程服务器,这可能并不总是可靠的。
你也可以直接从你的设备上获取它,但你必须通过箍来实现这一点 - 获取设备的IP地址并不像在Android上那样简单。
WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int ipAddress = wifiInfo.getIpAddress();
请注意ipAddress
是一个整数。
例如,如果您的IP地址是“86.52.119.245”:
getIpAddress
返回的int将为4118230102。希望它有所帮助。
答案 2 :(得分:1)
如果您希望外部IP this website可以为您提供帮助,他们也有XML API希望这会有所帮助。如果您需要本地IP(如果使用WIFI),Android api
中应该有一些内容答案 3 :(得分:0)
这帮助我获得了我的IPv4 IP。我从另一篇文章中得到了它,但是一些搜索结果显示了这个。
public static String getMyIp(){
try {
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress()) {
if(InetAddressUtils.isIPv4Address(inetAddress.getHostAddress())) {
return inetAddress.getHostAddress().toString();
}
}
}
}
} catch (SocketException ex) {
Log.e("NetworkSettings", "There was a socket error: " + ex.toString());
}
return null;
}
取自"How to get my ip address?" post并添加了IPv4检查(它为我返回了IPv6)