2017-03-04 36 views
0

我試圖從Android客戶端(從我的手機)連接到服務器(我的PC)。服務器和客戶端都使用KryoNet。當我嘗試從與服務器位於同一臺PC上的客戶端進行連接時,連接成功。當我嘗試從連接到無線的Android手機連接到與運行服務器的PC相同的路由器時,連接也是成功的。當我使用移動數據嘗試從手機進行連接時,連接失敗(它給出超時錯誤)。我做了端口轉發,並從Windows防火牆設置中打開端口。任何想法有什麼不對?Android客戶端未連接到服務器KryoNet

客戶端代碼:

final Client client = new Client();  
     client.getKryo().register(StringRequest.class); 
     final StringRequest request = new StringRequest(); 
     new Thread(client).start(); 

     System.out.println("Client started."); 

     try { 
      client.connect(5000, ipAddress, 54555); 
      client.addListener(new Listener() { 
       public void received(Connection connection, Object object) { 
        if (object instanceof StringRequest) { 
         StringRequest response = (StringRequest) object; 
         Gdx.app.log("Client",response.data); 
        } 
       } 
      }); 
     } catch (IOException e) { 
      Gdx.app.log("Exception", e.getMessage()); 
      e.printStackTrace(); 
     } 
     request.data = "Hello"; 
     client.sendTCP(request); 

Server代碼:

Server server = new Server(); 
    Kryo kryo = server.getKryo(); 
    kryo.register(StringRequest.class); 
    server.start(); 
    try { 
     server.bind(54555); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    server.addListener(new Listener() { 
     public void received (Connection connection, Object object) { 
      if (object instanceof StringRequest) { 
       StringRequest request = (StringRequest)object; 
       System.out.println("Server"+request.data); 
       StringRequest response = new StringRequest(); 
       response.data = "response"; 
       connection.sendTCP(response); 
      } 
     } 
    }); 

回答

0

請問您的Android應用程序具有Internet權限?

<uses-permission android:name="android.permission.INTERNET" /> 

它需要通過網絡進行通信。此外,請確保您嘗試連接到您的PC的外部IP,而不是本地IP(192.168.x.xxx)。你可以得到你的外部IP here

+0

再次感謝。我使用的是本地IP,這是問題所在。 – Andy