Как следует из названия, я ищу способ мониторинга сетевой активности.В частности, активность UDP и данные удаленных IP-адресов отправляются в / из.
Пример из встроенного монитора ресурсов Windows:
Столбец «Адреса» - это разрешенные IP-адресаиз (в данном случае) удаленных конечных точек UDP.
Пример из стороннего приложения "Netlimiter 4":
Первый столбец в этом случае - это неразрешенный удаленный IP-адрес, за которым следуетскорость передачи данных.
Учитывая эти две программы, я знаю, что это возможно сделать.Я просто в растерянности относительно того, как мне получить эти данные.
Итак, прежде всего, я уже попробовал команду netstat, которая не предоставляет никакой полезной информации (без удаленных адресов UDP).
Я также попробовал функцию GetExtendedUdpTable
из iphlpapi.h
(кажется, она также не дает мне то, что я хочу.)
Пример моего теста GetExtendedUdpTable
code:
MIB_UDPTABLE_OWNER_PID* pUdpTable;
MIB_UDPROW_OWNER_PID* owner;
DWORD dwSize;
DWORD dwResult;
dwResult = GetExtendedUdpTable(NULL, &dwSize, false, AF_INET, UDP_TABLE_OWNER_PID, 0);
pUdpTable = (MIB_UDPTABLE_OWNER_PID*)MALLOC(dwSize);
dwResult = GetExtendedUdpTable(pUdpTable, &dwSize, false, AF_INET, UDP_TABLE_OWNER_PID, 0);
for (DWORD dwLoop = 0; dwLoop < pUdpTable->dwNumEntries; dwLoop++) {
owner = &pUdpTable->table[dwLoop];
printf("%ld ", owner->dwOwningPid);
HANDLE Handle = OpenProcess(
PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,
FALSE,
owner->dwOwningPid
);
if (Handle) {
TCHAR Buffer[MAX_PATH];
if (GetModuleFileNameEx(Handle, 0, Buffer, MAX_PATH)) {
printf(Buffer);
printf("\n");
} else {
printf("Error GetModuleFileNameEx : %lu\n", GetLastError());
}
CloseHandle(Handle);
} else {
printf("Error OpenProcess : %lu\n", GetLastError());
}
}
FREE(pUdpTable);
Я ищу решение, которое можно встроить в инструмент, который я хотел бы создать. (Не требуется, чтобы конечный пользователь загружал дополнительную стороннюю программу.)
Большая часть проекта будет написана на JS с использованием NodeJS / Electron, в котором говорится, что если я ищу общее решение, независимое от языка программирования.(Хотя было бы неплохо избежать python / java, чтобы я мог ограничить количество виртуальных машин, необходимых для запуска проекта.)