Вы можете получить хорошее начало через System.Net.NetworkInformation . В частности, IPGlobalProperties.GetActiveTcpConnections .
Однако вы обнаружите, что эта библиотека не предоставляет PID, поэтому нет способа сузить его с помощью конкретного процесса, связанного с каждым соединением. Я предполагаю, что будет гораздо проще просто проанализировать вывод консоли netstat -ano
в коллекцию управляемых объектов и использовать простой запрос LINQ для извлечения конкретных соединений, которые вам нужны, на основе идентификатора процесса. Однако я не рекомендовал бы это, если вы собираетесь делать это часто, поскольку это будет очень медленный метод.
Вы также можете попробовать PInvoke для GetExtendedTcpTable()
в DLL, на которую вы ссылаетесь выше. У меня нет своего x64-бокса для тестирования, но это может быть простым устареванием конкретной функции, которую вы пытаетесь вызвать.