我试图在Android上创建http服务器。 APK在我的真实设备上正常运行。我是通过以下方式获取IP地址的:
Enumeration<NetworkInterface> enumNetworkInterfaces = NetworkInterface.getNetworkInterfaces();
while (enumNetworkInterfaces.hasMoreElements()) {
NetworkInterface networkInterface = enumNetworkInterfaces.nextElement();
Enumeration<InetAddress> enumInetAddress = networkInterface.getInetAddresses();
while (enumInetAddress.hasMoreElements()) {
InetAddress inetAddress = enumInetAddress.nextElement();
if (inetAddress.isSiteLocalAddress()) {
ip += "SiteLocalAddress: " + inetAddress.getHostAddress() + "\n";
}
}
}
它可以在我的真实设备上使用。在浏览器上,我可以通过输入上方的IP地址来访问它(例如192.168.1.21:8888)
但是如果我在模拟器上运行代码。它显示了更多的IP,其中一些像MAC地址,有些像普通地址(但它们不同):像
192.168.232.2
和
192.168.200.2:8888
然后,我尝试在浏览器上同时访问这两者,但加载一段时间后,显示错误“无法访问此网站”。
我尝试通过adb forward tcp:8888 tcp:8888
转发端口,但是没有运气。我也尝试过10.0.2.2:8888
,但也许是错误的,因为这就像从模拟器转发到本地PC一样,反之亦然...所以...我做错了什么?
谢谢您的时间
编辑:检查资源监视器后,端口8888当前为adb.exe
答案 0 :(得分:0)
try this one
public static 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() && inetAddress instanceof Inet4Address) {
return inetAddress.getHostAddress();
}
}
}
} catch (SocketException ex) {
ex.printStackTrace();
}
return null;
}