Подтвердить что ты не робот

Как выбрать бесплатный номер порта в python?

Возможный дубликат:
На локальном хосте, как выбрать свободный номер порта?

Мое требование отличается от этого вопроса.

На локальном хосте, как выбрать свободный номер порта?

Я пишу тестовую установку другого процесса с помощью python. Для другого процесса требуется номер порта, который должен быть передан (скажем, как параметр командной строки). Я не могу жестко закодировать некоторый случайный номер порта, потому что многие пользователи обычно запускают те же тесты в том же поле. Теперь, как выбрать свободный порт в python?

Edit:

Я не создаю сокет в python. Мне просто нужно передать номер другому процессу в качестве аргумента командной строки.

От ответа DRH, Я мог бы создать фиктивный сокет, получить его номер порта, закрыть его и перейти к фактическому процессу. Есть ли лучший способ сделать это?

4b9b3361

Ответ 1

Вероятно, это не безопасный способ делать то, что вы просите. Даже если ОС может вернуть порт, который в настоящее время свободен, нет гарантии, что другой процесс не будет связывать сокет с этим портом между моментом, когда вы запрашиваете порт, и когда приложение, которое вы вызываете, пытается связать с ним.

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