2013-09-03 2 views
0

У меня есть приложение, работающее на моем планшете Google Nexus, работающем на 4.3 JellyBean, который подключается к server(IP 50.30.233.162). Приложение не может подключиться к серверу и выдает сообщение об ошибке как «host not reachable».Программирование сокета не может подключиться к серверу (хост невозможен)

Я проверил ->InetAddress.getLocalHost().toString(); из приложения, и это дает «localhost/127.0.0.1» Но фактический IP устройства является «50.20.32.225»

Я также дал разрешение

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

Я действительно любая помощь была бы замечательной.

общественный класс MainActivity расширяет активность {

Socket socket = null; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 



     String serverAddress = "50.30.233.162"; 
     new Connecting().execute(serverAddress); 
} 


private class Connecting extends AsyncTask<String,Integer,String>{ 


    protected String doInBackground(String... serverAdd) { 

     String serverAddress = serverAdd[0]; 

     try { 

      EditText editText = (EditText) findViewById(R.id.edit_message); 
      editText.setText(InetAddress.getLocalHost().toString()); 

      int serverPort = 5789; 
      socket = new Socket(serverAddress, serverPort); 
    } catch (UnknownHostException e) { 
      // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
      // TODO Auto-generated catch block 
     e.printStackTrace(); 
     } 



     // TODO Auto-generated method stub 
     return null; 
    } 

} 

Это мой код сервера

общественного класса Сервер {

/** 
* @param args 
*/ 
public static void main(String[] args) { 
    try { 
    // TupleSpaceServer tupleServer = new TupleSpaceServer(); 

     ServerSocket server = null; 
     Socket client = null; 
     String serverIpAdd = null; 

     int portAdd; 
     serverIpAdd = InetAddress.getLocalHost().toString(); 
     String[] serverAdd = serverIpAdd.split("/"); 
     serverIpAdd = serverAdd[1]; 
     portAdd = 5789; 
     System.out.println("Server is now online"); 
     System.out.println("Server IP Address: " + serverIpAdd); 
     System.out.println("Port Address: " + portAdd); 
     server = new ServerSocket(portAdd); 

     while (true) { 
      client = server.accept(); 
      System.out.println("Client Connected Address: " 
        + client.getInetAddress()); 
     // new Thread(new SessionThread(client, tupleServer)).start(); 
      server.close(); 
     } 
    } catch (IOException e) { 
     System.err.println(e); 
    } 

} 

}

Сервер сейчас на сайте IP-адрес сервера : 50.30.233.162 Адрес порта: 5789

+0

Показать код .. –

+0

Локальный адрес устройства, на котором запущено приложение, не имеет ничего общего с адресом сервера. Я не понимаю эту часть вашего вопроса. Сообщение, которое вы получаете, указывает, что указанный адрес недоступен для клиента. Код вашего клиента довольно запутан, и по какой-то причине адрес сервера жестко подключен дважды. Я предлагаю вам его очистить. – EJP

+0

Вы используете другой IP-адрес в коде, как описано в тексте вопроса. – Henry

ответ

0

Здесь нет ничего явно неправильного, это, вероятно, проблема с сетью.

Я хотел бы начать с помощью ТСРйитр или Wireshark на стороне сервера, чтобы увидеть, если соединение действительно сделать это.

0

Ну, я понял проблему. Это проблема маршрутизатора. Мой маршрутизатор блокирует связь между устройствами. Я не мог понять изменения в маршрутизаторе, который должен был быть сделан, но я переключился на другой маршрутизатор, и теперь все работает отлично.

На данный момент я собираюсь придерживаться второго маршрутизатора и не вдаваться в детали, внося изменения в старый.

Смежные вопросы