2016-03-15 225 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​​是你的端口號,左邊是你的手機打的端口,右邊是端口的服務器上運行,所以你可以混合和匹配這些數字

當然,您只能在手機硬連線時運行此命令,並且每次斷開手機時都必須運行該命令。

相關問題