При программировании на Java,java.net.NoRouteToHostException
является общимсетьаномальный。Этот виданомальный Обычно означает применение Не могущийпопытаться найтиприезжатьведущий к Цель Хозяинпуть,В результате сетьсоединять установить невозможно. В этой статье будут подробно разобраны предыстория, причины, ошибки и примеры правильного кода этого исключения.,и обеспечить соответствующие меры предосторожности,Помогите читателям быстро решить эту проблему.
java.net.NoRouteToHostException
обычно всетьсоединять Бросается, когда попытка не удалась,Указывает, что приложение не может связаться с указанным адресом Хозяина через сеть. Это исключение обычно возникает в следующих случаях:
Например, типичным сценарием является следующий: приложение Java пытается подключиться к удаленному серверу для получения данных. Если целевой сервер недоступен или сеть настроена неправильно, будет выдано это исключение.
Socket socket = new Socket("192.168.1.100", 8080); // Попробуйте подключиться к удаленному Хозяину
В приведенном выше коде,если192.168.1.100
адрес Не доступенили ВОЗсеть Конфигурация Есть проблема,ТакSocket
Инициализация объекта завершится неудачей,и броситьNoRouteToHostException
。
привести кjava.net.NoRouteToHostException
изпричина В основном включают следующие типы:
Чтобы лучше понять проблему,Следующее дает возможностьпривести кNoRouteToHostException
изошибкапример кода:
public void connectToServer() {
try {
Socket socket = new Socket("192.168.1.100", 8080);
// Продолжить общение
} catch (IOException e) {
e.printStackTrace();
}
}
192.168.1.100
изпорт8080
,Но если IP недоступен или есть проблемы с локальной сетью Конфигурация,Socket
Будет выброшено во время инициализацииNoRouteToHostException
。избегатьNoRouteToHostException
,Необходимо убедиться, что целевой Хозяин доступен и конфигурация локальной сети правильна. Вот улучшенный пример кода:
public void connectToServer() {
String host = "192.168.1.100";
int port = 8080;
try {
if (isHostReachable(host, port)) {
Socket socket = new Socket(host, port);
// Продолжить общение
} else {
System.out.println("Не могущийсоединятьприезжать Хозяин: " + host + " порт: " + port);
}
} catch (IOException e) {
e.printStackTrace();
}
}
// Вспомогательный метод: проверьте, доступен ли Хозяин
private boolean isHostReachable(String host, int port) {
try {
SocketAddress socketAddress = new InetSocketAddress(host, port);
Socket socket = new Socket();
socket.connect(socketAddress, 3000); // Установите тайм-аут на 3 секунды.
socket.close();
return true;
} catch (IOException e) {
return false;
}
}
isHostReachable
метод,Сначала проверьте, доступны ли целевой Хозяин и порт.,тем самым избегая Не доступен Хозяин Бросить напрямуюNoRouteToHostException
。во время написания кода,Обратите внимание на следующие моменты, чтобы эффективно избежатьjava.net.NoRouteToHostException
:
NoRouteToHostException
、UnknownHostException
ждать。С помощью вышеуказанных методов,Вы можете эффективно избежатьjava.net.NoRouteToHostException
,Повышайте надежность и удобство сопровождения программирования. Я надеюсь, что эта статья поможет вам понять и решить эту распространенную проблему.