В Java я должен захватить номер порта для коммуникации между несколькими экземплярами той же программы. Теперь, я мог просто выбрать некоторое постоянное число и пойти с ним. Но я задаюсь вопросом, существует ли способ динамично выбрать номер порта, так, чтобы я не беспокоил своих пользователей установкой номера порта.
Вот одна идея, которую я имел, который работает как это:
Эта стратегия имеет смысл? Или есть ли лучший способ динамично выбрать номер порта?
Если вы подключитесь к порту 0, Java будет использовать порт, сгенерированный системой. :-) Так что, вероятно, это самый простой способ отступить, если желаемый порт уже используется.
ServerSocket s = new ServerSocket(0);
int port = s.getLocalPort(); // returns the port the system selected
Я бы взял обратное и выбрал порт с фиксированным высоким значением для вашего приложения. Сделайте это значением конфигурации, чтобы его можно было изменить при необходимости. Это упростит настройку, поскольку часто пользователям приложений требуется запрашивать сетевые операции для открытия портов. Обойдите значения, присвоенные IANA:
http://www.iana.org/assignments/port-numbers
Сканирование портов может превратить ваше приложение в плохого человека для многих систем обнаружения вторжений.
Я бы взял обратный и выбрал фиксированный высокий порт для вашего приложения. Это упростит настройку так часто, когда пользователям приложений требуется запрашивать сетевые операции для открытия портов. Работа с назначенными IANA значениями:
http://www.iana.org/assignments/port-numbers
Сканирование портов может превратить ваше приложение в плохого гражданина для многих систем обнаружения вторжений.
-121--3770405-Я бы сказал, используйте комбинацию хороших ответов и будьте разумны.
Полностью, ясно и понятно описать, что делает метод.
Если имя метода кажется слишком длинным - восстановите метод, чтобы сделать меньше.
-121--649396-Bonjour/ ZeroConf можно использовать для рекламы услуг каждого экземпляра и для поиска других. Рассмотрим это как службу каталогов , которая может помочь в управлении пространством имен портов.
В этом случае каждый экземпляр может просто захватить динамически назначенный порт. Запрос на привязку к порту «0» обычно предписывает системе назначить динамический порт.