Intereting Posts
Кнопка обратного вызова кнопки Android Fragment Как масштабировать анимированный текст в виде андроида вправо Исключение, возникающее при рендеринге: двоичная строка XML-файла # -1: класс раздувания ошибок <неизвестно> В каком блоге разработки Android есть самые пошаговые руководства и учебные пособия? Отправка почты в андроид без использования SMTP Альтернатива openintents для имитации датчиков для Android Содержимое Intellij не допускается в прологе Отключить блокировку экрана Android: как отображать предварительный просмотр камеры с помощью обратного вызова? Проблемы при масштабировании изображения YUV с использованием библиотеки libyuv Xamarin.Forms салфетки распознавания жестов Как сгенерировать файл .vcf из объекта, который содержит детали контакта и объект, отсутствует в телефонной книге Как разобрать GCM ответить на удаление недопустимого идентификатора регистрации с сервера с помощью php Как сделать значок пусковой установки Android Измените переход на ввод / выезд DialogFragment как раз перед увольнением

TCP \ IP-клиент – EHOSTUNREACH (нет пути к хосту)

Я пытаюсь разработать приложение TCP / IP клиентского сервера. У меня есть сервер, работающий на моем ПК, и клиентское приложение работает на мобильном устройстве. Они оба находятся в одной сети Wi-Fi, но я не могу установить связь между ними. Хотя отладка клиентского приложения Android показала следующую ошибку:

09-21 01:08:40.422: W/System.err(8536): java.net.ConnectException: failed to connect to /192.168.15.115 (port 4449): connect failed: EHOSTUNREACH (No route to host) 09-21 01:08:40.453: W/System.err(8536): at libcore.io.IoBridge.connect(IoBridge.java:114) 09-21 01:08:40.453: W/System.err(8536): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192) 09-21 01:08:40.453: W/System.err(8536): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) 09-21 01:08:40.453: W/System.err(8536): at java.net.Socket.startupSocket(Socket.java:566) 09-21 01:08:40.453: W/System.err(8536): at java.net.Socket.tryAllAddresses(Socket.java:127) 09-21 01:08:40.453: W/System.err(8536): at java.net.Socket.<init>(Socket.java:177) 09-21 01:08:40.453: W/System.err(8536): at java.net.Socket.<init>(Socket.java:149) 09-21 01:08:40.453: W/System.err(8536): at sabarish.example.client_mobile.MainActivity$1.onClick(MainActivity.java:61) 09-21 01:08:40.453: W/System.err(8536): at android.view.View.performClick(View.java:3511) 09-21 01:08:40.453: W/System.err(8536): at android.view.View$PerformClick.run(View.java:14105) 09-21 01:08:40.453: W/System.err(8536): at android.os.Handler.handleCallback(Handler.java:605) 09-21 01:08:40.453: W/System.err(8536): at android.os.Handler.dispatchMessage(Handler.java:92) 09-21 01:08:40.453: W/System.err(8536): at android.os.Looper.loop(Looper.java:137) 09-21 01:08:40.453: W/System.err(8536): at android.app.ActivityThread.main(ActivityThread.java:4424) 09-21 01:08:40.453: W/System.err(8536): at java.lang.reflect.Method.invokeNative(Native Method) 09-21 01:08:40.453: W/System.err(8536): at java.lang.reflect.Method.invoke(Method.java:511) 09-21 01:08:40.453: W/System.err(8536): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 09-21 01:08:40.453: W/System.err(8536): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 09-21 01:08:40.453: W/System.err(8536): at dalvik.system.NativeStart.main(Native Method) 09-21 01:08:40.457: W/System.err(8536): Caused by: libcore.io.ErrnoException: connect failed: EHOSTUNREACH (No route to host) 09-21 01:08:40.457: W/System.err(8536): at libcore.io.Posix.connect(Native Method) 09-21 01:08:40.457: W/System.err(8536): at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85) 09-21 01:08:40.457: W/System.err(8536): at libcore.io.IoBridge.connectErrno(IoBridge.java:127) 09-21 01:08:40.457: W/System.err(8536): at libcore.io.IoBridge.connect(IoBridge.java:112) 09-21 01:08:40.457: W/System.err(8536): ... 18 more 

Код, который я использую:

 public class MainActivity extends Activity { private Socket client; private PrintWriter printwriter; private EditText textField; private Button button; private String messsage; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textField = (EditText) findViewById(R.id.editText1); //reference to the text field button = (Button) findViewById(R.id.button1); //reference to the send button button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { messsage = textField.getText().toString(); //get the text message on the text field textField.setText(""); //Reset the text field to blank try { client = new Socket("192.168.15.115", 4449); //connect to server printwriter = new PrintWriter(client.getOutputStream(),true); printwriter.write(messsage); //write the message to output stream printwriter.flush(); printwriter.close(); client.close(); //closing the connection } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }); } } 

Что я делаю не так?

Solutions Collecting From Web of "TCP \ IP-клиент – EHOSTUNREACH (нет пути к хосту)"

Ошибка маршрутного маршрута указывает на то, что при попытке подключения TCP соединение завершилось неудачно, потому что базовое программное обеспечение протокола не могло найти сетевой узел для маршрута сетевого узла на указанный целевой узел.

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

Обычно вы указываете шлюз, к которому при попытке подключиться, запрос на соединение выходит из сетевого шлюза, который должен быть разрешен другими устройствами информационной технологии, такими как маршрутизаторы и т. Д.

Это похоже на Android-устройство, поэтому прежде всего убедитесь, что у вас есть возможность подключения Wi-Fi или сотовой сети. Другим было бы убедиться, что Wi-Fi или ячейка включены и работают.

Указанный IP-адрес обычно находится в частной подсети. Так что проверить, является ли устройство, к которому вы пытаетесь подключиться, находится в той же подсети, на которой установлено ваше устройство.

Вот документ о суб-сетях и маршрутизации .

Это похоже на сетевую проблему, а не на проблему Java. Или:

  • Сеть на клиенте либо не знает, как маршрутизировать пакеты на сервер,
  • Попытка подключения клиента к порту 4449 блокируется брандмауэром или фильтром пакетов или
  • Вы используете неправильный IP-адрес.

(Сообщение «Нет маршрута к хосту» указывает на то, что это первая проблема, но брандмауэры иногда конфигурируются так, чтобы давать неверные ответы на нежелательный трафик.)

В любом случае вам будет лучше искать сайт о том, как настроить и / или сети и маршрутизацию.

Привет, у меня была такая же проблема в моем mac и запуске приложения в Android-устройстве. Я должен был сделать следующие 2 вещи, чтобы заставить его работать:

  1. Выключить брандмауэр в Mac
  2. Включить инфракрасный приемник (System Pref> Безопасность> Брандмауэр> Дополнительно)

И это сработало!

Я сталкиваюсь с той же проблемой, когда я разработал приложение для Android и общаюсь с настольным сервером java, чтобы решить проблему, просто отключите USB-кабель, который соединяет Android-телефон с ПК.

Ага..

Хозяин недостижим, точно так же. Однако, если все – oK (хорошо сконфигурированный узел / сеть, хороший сигнал wifi, …). Вы можете принудительно ping serverIP процесс, используя ping serverIP (с телефона) или ping smartphone (с сервера).

Пинг (ICMP-пакеты) заставит маршрутизатор ускорить новую маршрутизацию (способ добраться до хоста) … отправить много пинов (опция -n), например: ping google.com -n 1000 (1000 последовательных пингов)