Как выбрать бесплатный номер порта в python?
Возможный дубликат:
На локальном хосте, как выбрать свободный номер порта?
Мое требование отличается от этого вопроса.
На локальном хосте, как выбрать свободный номер порта?
Я пишу тестовую установку другого процесса с помощью python. Для другого процесса требуется номер порта, который должен быть передан (скажем, как параметр командной строки). Я не могу жестко закодировать некоторый случайный номер порта, потому что многие пользователи обычно запускают те же тесты в том же поле. Теперь, как выбрать свободный порт в python?
Edit:
Я не создаю сокет в python. Мне просто нужно передать номер другому процессу в качестве аргумента командной строки.
От ответа DRH,
Я мог бы создать фиктивный сокет, получить его номер порта, закрыть его и перейти к фактическому процессу. Есть ли лучший способ сделать это?
Ответы
Ответ 1
Вероятно, это не безопасный способ делать то, что вы просите. Даже если ОС может вернуть порт, который в настоящее время свободен, нет гарантии, что другой процесс не будет связывать сокет с этим портом между моментом, когда вы запрашиваете порт, и когда приложение, которое вы вызываете, пытается связать с ним.
Учитывая, что если вы просто ищете порт, который, скорее всего, бесплатный, вы можете привязать к порту 0
, как описано здесь На локальном хосте, как выбрать свободный порт номер?, закройте полученный сокет (освободив порт), а затем передайте это значение вашему приложению.