У меня была странная проблема с машиной SPARC Solaris 11.3. Я использовал для проверки, свободен ли порт или нет, используя следующий метод в java (возвращает true, если порт свободен, иначе возвращает false).
public static boolean isPortFree(int port) {
try {
new ServerSocket(port).close();
return true;
} catch (IOException e) {
System.out.println("Exception "+e.getMessage());
return false;
}
}
Приведенный выше код прекрасно работает во всех ОС, кроме Solaris. На машине Solaris, когда я тестировал с портом 22, он работает как положено, но когда я тестировал с портом 12345, который используется другим процессом, он возвращает true, что является неправильным поведением. Должно появиться исключение, говорящее Адрес уже используется и возвращающее false.
Пожалуйста, предложите мне хорошую идею, которая работает даже в Solaris