我想获取Android手机的IP地址,为此我尝试了InetAddress,但我在模拟器上获得了IP地址127.0.0.1。我怎样才能得到实际的 IP 地址。其次,我想使用来自网络服务器的 IP 地址联系该 android 手机,以询问其位置等信息。例如:假设Phone1 想要Phone2 的信息,然后Phone1 联系webserver,webserver 使用其保存的IP 地址联系phone2,然后phone2 将其位置响应给webserver,webserver 响应phone1。
问问题
1028 次
3 回答
0
与其让服务器询问电话的位置,不如换一种方式思考。
创建一个将在手机上运行并定期将其位置发送到您的服务器的应用程序。那么当Phone 2想知道Phone 1的位置时,它会从服务器获取最新的已知位置。
于 2012-06-06T09:07:04.187 回答
0
在这里找到:http ://www.droidnova.com/get-the-ip-address-of-your-device,304.html
public String getLocalIpAddress() {
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()) {
return inetAddress.getHostAddress().toString();
}
}
}
} catch (SocketException ex) {
Log.e(LOG_TAG, ex.toString());
}
return null;
}
因此,如果此方法返回 null,则表示没有可用的连接。如果该方法返回一个字符串,该字符串包含设备当前使用的ip地址,与3G或WiFi无关。
于 2012-06-06T09:20:47.547 回答
0
获取 IPV4 的代码:
private String getLocalIpAddress() {
try {
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress in`enter code here`etAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress()) {
if (inetAddress instanceof Inet4Address) {
return ((Inet4Address)inetAddress).getHostAddress().toString();
}
}
}
}
} catch (SocketException ex) {
Log.e("ServerActivity", ex.toString());
}
return null;
}
于 2014-04-02T12:44:45.860 回答