2017-03-04 4 views
0

안드로이드 클라이언트 (내 전화기)에서 서버 (내 PC)에 연결하려고합니다. 서버와 클라이언트 모두 KryoNet을 사용하고 있습니다. 서버와 동일한 PC에있는 클라이언트에서 연결을 시도하면 연결이 성공적입니다. 무선으로 연결된 내 안드로이드 폰 (서버를 구동하는 PC와 같은 라우터에 연결)에서 연결을 시도하면 연결이 성공합니다. 모바일 데이터를 사용하는 동안 전화 연결을 시도 할 때 연결이 실패합니다 (시간 초과 오류가 발생 함). 포트 포워딩을 수행하고 Windows 방화벽 설정에서 포트를 열었습니다. 어떤 생각이 잘못된거야?안드로이드 클라이언트가 서버에 연결되어 있지 않습니다. 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 = 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

이 안드로이드 응용 프로그램이 인터넷 권한이 있습니까?

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

네트워크를 통해 통신해야합니다. 또한 로컬 IP (192.168.x.xxx)가 아닌 PC의 외부 IP에 연결하려고하는지 확인하십시오. 외부 IP here을 얻을 수 있습니다.

+0

다시 한 번 감사드립니다. 로컬 IP를 사용하고 있었는데 문제였습니다. – Andy