2016-03-15 170 views
3

我正在开发一个依赖于节点服务器的android应用程序。我希望能够在本地测试我的android应用程序和节点服务器。Android应用程序无法连接到本地服务器

我有我的节点服务器在我的电脑上运行,并尝试从我的Android应用程序(在我的物理设备上)访问它导致404错误代码。

但是,如果我在我的电脑上模拟android,完全相同的代码将工作。当我从手机的浏览器访问服务器时,服务器也可以正常工作。

我尝试使用以下代码来检测服务器,以防IP计算机发生更改。

  byte[] ip = ByteBuffer.allocate(4).order(ByteOrder.LITTLE_ENDIAN).putInt(((WifiManager) activity.getSystemService(activity.WIFI_SERVICE)).getConnectionInfo().getIpAddress()).array(); 
      for(int i = 0; i < 256; i++) { 
       ip[3] = (byte)i; 
       try { 
        InetAddress addr = InetAddress.getByAddress(ip); 
        System.out.println("trying " + addr.getHostAddress()); 
        if(addr.isReachable(5000)) { 
         System.out.println("yes"); 
        } 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 

它并没有说我的电脑的IP地址是。

我在想这个错吗?有另一种方法吗?有没有我没有想到的设置?

+0

从计算机上的控制台Java应用程序执行时,此代码段是否工作?也许一个端口目前被阻止。这可以解释为什么网络浏览器不能通过Android应用程序获得。 –

+0

您是否在您的计算机上使用任何代理? –

+0

@SharpEdge我还没有设置任何代理...有什么方法可以检查吗? –

回答

0

我实际上发现有一个从你的移动设备到你的计算机的转发请求的命令,这使得你不必写ip检查代码。只需使用下面的ADB命令

adb reverse tcp:8080 tcp:8080 

,其中8080​​是你的端口号,左边是你的手机打的端口,右边是端口的服务器上运行,所以你可以混合和匹配这些数字

当然,您只能在手机硬连线时运行此命令,并且每次断开手机时都必须运行该命令。

相关问题