Как получить удаленный IP-адрес и порт из активного соединения UDP? - PullRequest
0 голосов
/ 09 апреля 2019

Я работаю над графическим приложением Windows. Поэтому решения на c ++ и c # предпочтительнее.

Для моего приложения мне нужно получить удаленный адрес и порт из активного соединения udp от определенного процесса.

Я попробовал IP Helper API, но методы для UDP не дают удаленный адрес и порт.

Я уже видел эти сообщения Получить IP-адрес назначения / порт активного соединения udp? и Удаленный адрес активных соединений UDP в Windows с помощью IP Helper .

Я понимаю, почему IP Helper не может выполнять эту работу (udp не имеет соединения и ему нужно захватывать пакеты), но я не нашел ничего конкретного, как это сделать.

Есть ли у вас готовое решение или что-то близкое к нему?

1 Ответ

0 голосов
/ 10 апреля 2019

Как вы уже обнаружили, UDP не использует соединения, поэтому ОС не отслеживает информацию об удаленной стороне, как это делается для TCP.В отличие от сокета TCP, сокет UDP может одновременно обмениваться данными с несколькими удаленными сторонами, где sendto() указывает ip / порт назначения, а recvfrom() сообщает ip / порт отправителя.

IЯ понимаю, почему IP Helper не может выполнить эту работу (udp не имеет соединения и ему нужно захватывать пакеты), но я не нашел ничего конкретного, как это сделать.

Вам нужно использовать библиотеку захвата пакетов, такую ​​как libpcap и вручную отслеживайте количество ips / портов исходящих пакетов, которые вы видите.

...