Получите случайный, высокий номер порта, который все еще доступен

Алгоритм:

  1. сканировать строку, помещая в стек для каждого '(' найденного в строке
  2. , если char ')' отсканированного, всплывающего '(' из стека

Теперь скобки сбалансированы для двух условий:

  • '(' может быть извлечен из стека для каждого ')', найденного в строке, и
  • стек пуст в конце (когда обрабатывается вся строка)
9
задан 4 June 2009 в 01:14
поделиться

3 ответа

Если вы не укажете номер порта, ОС автоматически выберет для вас номер временного порта .

Из Выбор номера порта ]:

Новое серверное программное обеспечение должно стремиться избегать зависимости от определенного номера порта, особенно если это программное обеспечение пользовательского уровня, которое не обязательно привязано к хорошо известному порту. К счастью, это легко сделать, запросив порт 0, который дает системе команду выбрать временный номер порта.

14
ответ дан 4 December 2019 в 15:25
поделиться

Временные порты могут это делать. Ваша ОС назначит вам порт из пула свободных портов.

Есть некоторый код C под лицензией BSD, который выполняет это здесь

В Python вы можете указать пару адресов ('', 0) для той же цели. , например sock.bind (('', 0))

6
ответ дан 4 December 2019 в 15:25
поделиться

Единственный способ - перебрать нужный диапазон портов, пытаясь привязать сокет к каждому порту по одному, пока не найдете тот, который успешно работает.

-9
ответ дан 4 December 2019 в 15:25
поделиться