Java проверка открытости UDP порта

188
08 января 2020, 23:50

Не могу написать код, который проверяет открыт UDP порт или нет. Мне нужно, чтобы мой код обрабатывал ICMP пакеты от системы о том, что порт недоступен. В документации написано, что connect() должен возвращать PortUnreachableException, если возвращается ICMP пакет. Но я не смог ни разу поймать это исключение. В WireShark ICMP пакеты обрабатываются корректно. Может кто-нибудь написать пример, когда вылезает исключение PortUnreachableException о недоступности UDP порта.

try {
    DatagramSocket socket = new DatagramSocket();
    socket.connect(InetAddress.getLoopbackAddress(), 5);
    String message = "Hello";
    DatagramPacket packet = new DatagramPacket(message.getBytes(), message.length(), socket.getInetAddress(), socket.getPort());
    socket.send(packet);
    socket.send(packet);
    socket.send(packet);
}catch (PortUnreachableException e) {
    System.out.println("PortUnreachable"); //Это исключение не выбрасывается
}
catch (IOException e) {
    e.printStackTrace();
}
Answer 1

Вот решение. Работает только в том случае, если закрытый порт на который отправляется пакет возвращает ICMP пакет.

try {
    DatagramSocket datagramSocket = new DatagramSocket();
    byte[] pingData = "PING".getBytes(StandardCharsets.UTF_8);
    InetAddress hostAdress = InetAddress.getByName(hostName);
    datagramSocket.connect(hostAdress, port);
    DatagramPacket sendPacket = new DatagramPacket(pingData, pingData.length, hostAdress, port);
    datagramSocket.send(sendPacket);
    byte[] receiveData = new byte[8];
    DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
    datagramSocket.setSoTimeout(200);
    datagramSocket.receive(receivePacket);
} catch (SocketTimeoutException e) {
    return true;
} catch (IOException e) {
    return false;
}
return false;
READ ALSO
No Network Security Config specified

No Network Security Config specified

знаю, что тут уйма ответов на мой вопрос, но я либо неправильно пробую, либо опять же неправильно пробуюРазрабатываю приложение на android

195
Grid Layout in Sass

Grid Layout in Sass

Всем Доброго дня! Подскажите как применить правило Grid к всем child элементам в Sass

178
Позиция картинки

Позиция картинки

Как зафиксировать картинку по центру, а то при изменения размера окна браузера, картинка смещается

191
v-bind:style вынести в computed VUE JS

v-bind:style вынести в computed VUE JS

День добрыйС помощью :style забиндила стили внутри Html-кода, теперь понимаю, что логичнее было бы такой кусок кода поместить в computed внутри скрипта

217