Я пытаюсь собрать программу на c ++, чтобы увидеть, к каким игровым серверам подключен клиент для игрового сайта. Для программы нам нужно увидеть, подключен ли клиент к определенному серверу или нет. Я протестировал использование Wireshark, и эта программа может видеть входящие / исходящие соединения с сервером и с сервера — это именно то, что мне нужно, но я просто не уверен, как это сделать. Я понимаю, что вы можете видеть, какие портовые соединения входят и выходят через командную строку, используя netstat, но netstat не дает подробностей, которые я представляю. Все, что мне нужно, — это сканировать исходящие соединения и сравнивать их с IP-адресом, и, если IP-адрес совпадает, они подключаются к серверу.
Возможно ли это через c ++? Если нет, кто-нибудь знает, как это делает Wireshark?
Приветствия.
Проверьте libpcap http://www.tcpdump.org/
Возможно, вам придется деконструировать сами пакеты UDP / TCP.
Если вы хотите более простое решение, вы можете передать вывод tcpdump как stdin. Вы можете задать фильтр tcpdump, чтобы убедиться, что ваше приложение не содержит нежелательного контента.
Это зависит от вашей операционной системы и отличается в Windows и Linux.
В Linux вы можете получить всю информацию о сокетах программы, используя lsof -p [PID]
где PID — это PID программы.
Чтобы сделать это в вашей собственной программе, посмотрите исходный код lsof и посмотрите, как это делается. Насколько я помню, это делается чтением файлов в / proc.
В Windows вы можете попробовать C ++ Получить дескриптор открытых сокетов программы