Перечислите все соединения tcp и udp программно вместе с pid - PullRequest
0 голосов
/ 04 октября 2018

В настоящее время я создаю инструмент мониторинга (исполняемый файл c ++ / c) для macOS, который будет собирать всю вашу сетевую информацию.В настоящее время застрял на части, где я должен собрать все соединения TCP и UDP, которые активны вместе с идентификатором процесса использования процесса.Аналогично выводу команды TCP netstat -anv -p.Один из подходов состоит в том, чтобы использовать саму утилиту netstat и захватывать выходные данные, из-за ограничений производительности, я не могу использовать этот подход.

Другая найденная мною альтернатива - использовать Sysctl API с net.inet.tcp.pcblist mib, чтобы получить все активные соединения TCP.С помощью исходного кода net stat мне удалось проанализировать вывод этой команды.Проблема в том, что при использовании публично определенных структур я не могу получить идентификатор процесса использующего процесса.Старая версия netstat не печатает PID, тогда как в новой версии печатаются PID.Но проблема с новой версией заключается в том, что она использует частные структуры, которые не являются частью стандартных заголовочных файлов.Mib используется "net.inet.tcp.pcblist_n". Я не хочу рисковать с использованием этой частной структуры.Есть ли другие альтернативы, которые я могу использовать, чтобы получить PID, используя стандартные структуры?

новый источник: https://opensource.apple.com/source/network_cmds/network_cmds-543.50.4/netstat.tproj/inet.c.auto.html

старый источник: https://opensource.apple.com/source/network_cmds/network_cmds-85/netstat.tproj/inet.c

Спасибо и С уважением, Прасанна

...