我无法通过桌面上的程序访问模拟器上的Android Server,如何解决?
部分代码(来自How to find LAN ip address of android device?):
public static ArrayList<String> getSelfIP(){
try {
ArrayList<String> ipList = new ArrayList<>();
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()) {
ipList.add(inetAddress.getHostAddress().toString());
}
}
}
return ipList;
} catch (SocketException ex) {}
return null;
}
结果为[fe80::5054:ff:fe12:3456%eth0, 10.0.2.15]
我需要配置什么才能使我的桌面程序可以访问模拟器?
我做了以下事情:
> adb forward tcp:50000 tcp:50000
但是,我无法通过localhost:50000访问服务器。
答案 0 :(得分:4)
尝试使用IP地址 10.0.2.2 。
它是主机环回接口的特殊别名(即开发计算机上的127.0.0.1)
答案 1 :(得分:1)
查看this Android文档,第34节&#34;使用网络重定向&#34;。
通过模拟器控制台设置重定向
每个仿真器实例都提供了一个可以连接的控制台 to,发出特定于该实例的命令。您可以使用 redir console命令用于根据需要设置重定向 模拟器实例。
首先,确定目标模拟器的控制台端口号 实例。例如,第一个仿真器的控制台端口号 启动的实例是5554.接下来,连接到目标的控制台 模拟器实例,指定其控制台端口号,如下所示:
telnet localhost 5554
连接后,使用redir命令工作 重定向。要添加重定向,请使用:
add <protocol>:<host-port>:<guest-port>
其中
<protocol>
是tcp 或udp,<host-port>
和<guest-port>
设置您的映射 自己的机器和模拟系统。例如,以下命令设置处理的重定向 所有传入的TCP连接到主机(开发)机器上 127.0.0.1:5000并将它们传递给模拟系统的10.0.2.15:6000:
redir add tcp:5000:6000
在你的情况下,最后一个命令是
redir add tcp:5000:5000
答案 2 :(得分:0)
我曾经遇到过这个问题,请使用10.0.2.2 IP地址来解决问题。