Запуск внутрипроцессной JVM с отладочным портом прослушивания. Как проверить занят ли порт

Я использую функцию JNI_CreateJavaVM создать на окнах внутрипроцессную JVM в исполняемый файл. Я также передаю некоторые параметры, чтобы включить отладку, в частности:

-Xrunjdwp:transport=dt_socket,server=y,address=666,suspend=n

наряду с некоторыми другими вариантами. Это отлично работает.

Однако проблема в том, что я запускаю две версии исполняемого файла: JNI_CreateJavaVM сбои. Очевидное решение — проверить, занят ли порт 666 и, если это так, использовать другой номер порта. За исключением того, что я не знаю, как это сделать!

Итак, мой вопрос: как я могу проверить, прослушивается ли уже порт?

0

Решение

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

Кроме того, если вы пытаетесь написать серверное приложение, операционная система может автоматически выбрать для вас свободный порт. Из JavaDoc для http://docs.oracle.com/javase/7/docs/api/java/net/ServerSocket.html

Создает сокет сервера, связанный с указанным портом. Номер порта 0 означает, что номер порта автоматически выделяется, как правило, из временного диапазона портов. Этот номер порта можно затем получить, вызвав getLocalPort.

0

Другие решения


По вопросам рекламы [email protected]