Как ждать, пока другой процесс начнет прослушивать локальный порт? - PullRequest
0 голосов
/ 01 июля 2010

У меня есть программа тестового драйвера, которая запускает отдельный процесс тестового сервера. Процесс тестового сервера прослушивает локальный порт, и после его завершения тестовый драйвер запускает тест, который обращается к тестовому серверу.

В настоящее время тестовый драйвер неоднократно пытается подключиться к локальному порту (зациклите некоторые, спите несколько, попробуйте снова). Это не оптимальное решение и явно ненадежное.

Можно ли ждать какого-то события, которое говорит "кто-то слушает через локальный порт"? Попытка подключения к ранним результатам приводит к ошибке «Порт закрыт».

Я бы хотел реализовать это решение для Windows, Linux и Mac OS X. Если у вас есть несколько советов по любой из этих систем, это приветствуется (вероятно, это будет зависеть от системы в каждом случае). *

Ответы [ 2 ]

1 голос
/ 02 июля 2010

В Windows я использую именованное событие для такого рода вещей.

Тестовый жгут может создать событие и передать имя события на сервер, который он запускает; Затем он ожидает события, о котором будет сообщено, прежде чем продолжить тестирование. Затем сервер подключается к событию, инициализирует себя и, как только он готов принять соединения, он сигнализирует о событии.

1 голос
/ 01 июля 2010

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

Итак, выведите сервер "сервер запущен", когда сокет будет готов.Драйвер должен дождаться, пока сервер отправит эту строку на стандартный вывод, а затем попытаться подключиться к порту сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...