Java.net.ConnectException: не удалось подключиться к /192.168.253.3 (порт 2468): соединение не выполнено: ECONNREFUSED (соединение отклонено)
Я хочу передать некоторые данные между ПК и мобильным телефоном с WiFi.
Вот как я получаю IP-адрес WiFi:
String ip = String.format(
"%d.%d.%d.%d",
(wifiInfo.getIpAddress() & 0xff),
(wifiInfo.getIpAddress() >> 8 & 0xff),
(wifiInfo.getIpAddress() >> 16 & 0xff),
(wifiInfo.getIpAddress() >> 24 & 0xff));
new Recive().execute(ip);
Это код отправки сообщения на ПК:
Socket socket = null;
String message = "test\r\n";
protected Void doInBackground(String... urls) {
try {
Log.i("ip", urls[0]);
socket = new Socket(urls[0], 2468);
toserver = new DataOutputStream(socket.getOutputStream());
toserver.writeBytes(message);
toserver.flush();
toserver.close();
socket.close();
return null;
} catch (Exception e) {
Log.i("e", e.toString());
return null;
}
}
Но возникает ошибка,
java.net.ConnectException: не удалось подключиться к /192.168.253.3 (порт 2468): не удалось подключиться: ECONNREFUSED (соединение отклонено)
Кроме того, я использую телефон Android для запуска приложения.
Ответы
Ответ 1
Ошибка connect failed: ECONNREFUSED (Connection refused)
скорее всего, означает, что ничего не прослушивается на этом порту и на этом IP-адресе. Возможные объяснения включают в себя:
- сервис потерпел крах или не был (успешно!) запущен,
- ваш клиент пытается подключиться, используя неверный IP-адрес или порт,
- ваш клиент пытается подключиться, используя DNS-имя, которое разрешается с неправильным IP, или
- доступ к серверу блокируется брандмауэром, который "отказывается" от имени сервера/службы. Это довольно маловероятно, учитывая, что обычная практика (в наши дни) заключается в том, чтобы брандмауэры "закрывали дыру" от всех нежелательных попыток подключения.
Обратите внимание, что хотя у вас есть переменная массива с именем urls
, она не может содержать реальные URL-адреса. Нет перегрузки конструктора Socket
который принимает реальный URL в любой форме. Действительно, если вы указали URL-адрес в виде строки:
new Socket("http://example.com", 42)
результат будет другим исключением. Аналогично, если вы попытаетесь подключиться к IP-адресу в сети, к которой вы не можете направить маршрут (например, "другая сеть WiFi"), тогда вы получите другое исключение; например, "хост не найден", "нет маршрута к хосту" или "нет маршрута к сети".
Ответ 2
Почему это могло произойти:
- Сервер не смог отправить ответ: убедитесь, что бэкэнд работает правильно на IP и указанном порту.
- SSL-соединения блокируются: исправить это, импортировав сертификаты SSL
- Куки файлы не отправляются
- Тайм-аут запроса: время ожидания запроса на изменение
Ответ 3
Распространенная ошибка при разработке приложения для Android, работающего на виртуальном устройстве на вашем компьютере разработчика, состоит в том, чтобы забыть, что виртуальное устройство не является тем же хостом, что и ваш компьютер разработчика. Поэтому, если ваш сервер работает на вашем компьютере разработчика, вы не можете использовать URL " http://localhost/...", так как он будет искать конечную точку сервера на виртуальном устройстве, а не на вашем компьютере разработчика.
Ответ 4
Я также получал ту же проблему, что и несколько IP-адресов, таких как мой общедоступный IP-адрес и IP-адрес по умолчанию localhost 127.0.0.1 в Windows и шлюзе по умолчанию, но тот же ответ.
но я забыл проверить
C:> ipconfig
ipconfig четко скажите, что такое мой фактический IP-адрес этого адаптера, с которым я подключился, как я был связан с адаптером Wi-Fi. Мой IP-адрес покажет мне как:
Wireless LAN adapter Wireless Network Connection:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::69fa:9475:431e:fad7%11
IPv4 Address. . . . . . . . . . . : 192.168.15.92
Надеюсь, это поможет вам.
Ответ 5
во-первых, я использовал формат "localhost: port", который встретил эту ошибку. Затем я изменил адрес на формат "ip: port" и проблема была решена.
Ответ 6
Я решил ту же проблему, я использовал сетевое соединение через прокси-сервер, когда я выбрал опцию не использовать прокси для внутренних и локальных соединений, проблема исчезла
Ответ 7
вы можете преобразовать домен в IP-адрес, потому что у каждого домена есть определенный IP-адрес, тогда вы решите эту проблему. Я надеюсь, что это поможет вам.