Есть ли идентификатор сети для хоста в локальной сети?

Маршрутизатор выставляет себя снаружи по IP как 66.249.89.104 и многие хосты могут подключиться к нему, чтобы сформировать локальную сеть.

Мой вопрос:

Есть ли способ идентифицировать конкретный хост в этой локальной сети?

Все, что я попробовал, это какая-то догадка, которая без сомнения провалилась:

ping host_lan_ip@66.249.89.104
Ping request could not find host host_lan_ip@66.249.89.104. Please check the name and try again.

Я думаю, что поскольку каждый хост в локальной сети может получать свои пакеты извне маршрутизатора, ОБЯЗАТЕЛЬНО должен быть способ идентифицировать каждый хост, но что это?

ОБНОВЛЕНИЕ Как добиться перенаправления портов, кроме как настроить его в маршрутизаторе?

ОБНОВИТЬ

Теперь я думаю, что UPnP - это путь, но есть ли рабочий образец для этого?

1 ответ

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

UPnP - это способ настроить порт вперед. Затем вам нужно решить проблему с каким портом, если вы хотите общаться с несколькими клиентами за одним и тем же NAT, они не могут все использовать один и тот же порт, поэтому вам нужен какой-то способ узнать, какой клиент использует какой порт. Центральный способ, на котором клиенты могут перечислять себя, обычно является способом сделать это (как игровые серверы, перечисленные в лобби, главный сервер отслеживает IP/ порт, так что все остальные могут подключиться)

Быстрый поиск в Google обнаружил библиотеку C++ UPnP, которую, возможно, стоит попробовать:

http://www.koders.com/cpp/fid2A3FF8255A7B67758E80E0423AA46F9DD8FD734A.aspx?s=setwindowshookex

и Windows UPnP API:

http://msdn.microsoft.com/en-us/library/aa382303%28VS.85%29.aspx

Другие вопросы по тегам