Android服务器套接字

时间:2015-06-19 08:42:50

标签: android sockets server

我无法通过桌面上的程序访问模拟器上的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访问服务器。

3 个答案:

答案 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地址来解决问题。