Запустите службу в локальной сети; Случай с неизвестным адресом сервера

Эти вопросы являются новой попыткой решить предыдущий вопрос «Как получить список всех действительных IP-адресов в локальной сети с помощью Javascript?» (см. Как получить список всех допустимых IP-адресов в локальной сети с помощью Javascript?)

Чтобы избежать необходимости тестировать миллионы адресов, мне интересно, возможно ли это по следующему сценарию (в этом случае забудьте об ограничении JavaScriipt в начальном сообщении и предположите более общий язык, скажем, С++ и библиотеку ввода-вывода как Boost Asio):

а) Сервер "S" пробуждается в локальной сети, чтобы предоставить какую-либо услугу, например прослушивание через порт X, и получить случайный адрес (т.е. A1 = 192.168.1.35).

б) Клиент «C», которому нужна услуга, просыпается в той же локальной сети, получает другой случайный адрес (скажем, A2 = 192.168.1.40).

«C» не знает адрес «S» для получения услуги. Итак, два вопроса:

1.- Могут ли "S" и "C" знать для себя свои адреса (A1 и A2)?

2.- Может ли «C» отправить широковещательный запрос в локальную сеть на указанный порт X? Некоторые как "Здесь P2, кто-то в X?"

Очевидно, что если "S" прослушивает данный порт и может получить сообщение, они, в свою очередь, могут транслировать свое собственное направление; так что если "C" слушает, может получить адрес сервера.


person Old newbie    schedule 10.08.2014    source источник
comment
Вы случайно не пытаетесь заново изобрести UPnP?   -  person Igor Tandetnik    schedule 11.08.2014
comment
Эм-м-м. вовсе нет, а пытается решить конкретную проблему, чтобы заполнить базу данных приложения реальными данными.   -  person Old newbie    schedule 11.08.2014
comment
Может быть, некоторым будет интересно прочитать это: codeproject.com/Lounge.aspx ?msg=4878760#xx4878760xx   -  person Old newbie    schedule 11.08.2014


Ответы (1)


Что касается моего первого вопроса, после некоторого поиска ответ - Да.

См. "часто задаваемые вопросы программиста Winsock".

Если в Windows, как в моем случае для сервера, есть полный API с именем «IP Helper», http://msdn.microsoft.com/en-us/library/aa366073%28VS.85%29.aspx, который также может служить .

Что касается второго вопроса, я попробую быстрый и грязный метод, и надеюсь, что вернусь с каким-то результатом.

person Old newbie    schedule 11.08.2014