Я обнаружил, что вы можете использовать GetTcpTable2
, чтобы узнать все состояния TCP-соединения. К сожалению, для циклического перебора массива, возвращаемого GetTcpTable2
, требуется 100 мс (см. Пример в верхней ссылке). Это неприемлемо, потому что я хотел бы узнать PID каждого сетевого пакета, который проходит через (1000 в секунду).
Вместо этого я хотел бы получать уведомление, когда любой сокет TCP меняет статус на LISTEN
или CLOSED
и хранить кэш открытых портов.
Можно ли подписаться на события открытия и закрытия любого порта в системе?
ОБНОВЛЕНИЕ: Цель состоит в том, чтобыопределить, какой процесс отправляет пакеты. IP-пакеты, которые есть. Если вы знаете исходный порт, вы знаете процесс, который использует сокет. Я хотел бы сделать его как можно более производительным, чтобы я мог использовать Интернет как обычно, а также следить за тем, что делает мой компьютер.