GetExtendedUdpTable и удаленный IP-адрес - PullRequest
0 голосов
/ 13 сентября 2009

У меня есть некоторый код на C #, который отображает процессы на IP-адреса, я в основном пытаюсь написать программное обеспечение, которое будет смотреть на процесс и давать мне IP-адрес, чтобы я мог написать монитор, который позволит друзьям найти себя в играх.

При запуске моего приложения, хотя оно обнаруживает, что игровой процесс имеет соединение UDP, но я не могу получить IP-адрес.

Я запустил пакетный анализатор, и 78.111.229.123:32000 отображается на маршрутизаторе / шлюзе, но он не отображается в моем приложении.

Какие-нибудь идеи, чтобы заставить меня работать?

1 Ответ

0 голосов
/ 13 сентября 2009

Как вы настраиваете сокет в игровом приложении? Можете ли вы опубликовать пример кода установки сокета?

Используете ли вы подстановочный адрес и порт при создании сокета? Я предполагаю, что если ваше игровое приложение не привязано к определенному IP-адресу и порту явно, это может быть источником вашей проблемы.

Другой вопрос: вы пытаетесь определить локальный IP-адрес, удаленный IP-адрес или оба?

Если вы пытаетесь определить удаленный IP-адрес, это может быть невозможно, если игровое приложение не использует так называемые подключенные UDP-сокеты . Именно здесь клиентское приложение вызывает соединение через сокет UDP, чтобы создать связь между локальным и удаленным сокетами в базовой ОС. Это имеет определенные преимущества и недостатки, перечисленные в приведенной выше ссылке.

Редактировать

Взгляните на этот пост: PID из номера сокета в Windows?

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

Запустите игру и запустите netstat -ap UDP - если вы видите, что в списке нет удаленных адресов, это подтвердит вышеуказанное подозрение.

...