1

OS 上のすべての TCP 接続を監視するために C# が提供するヘルパー クラス。サンプルコードもいただければ幸いです。

注: 当初の目的は Windows でこれを監視することでしたが、.Net Core を使用して他の OS でも同じことを行うとよいでしょう。

4

2 に答える 2

4

マシン上の TCP ソケットを監視すると仮定すると、System.Net.NetworkInformation.GetActiveTcpConnections を使用できます。これにより、TCP 接続のリストとそれぞれの現在の状態が得られます。通常のタイマーで呼び出して、ソケットの更新された状態を取得できます。

GetTcpTable やあまり文書化されていない GetTcpTableEx など、このための Win32 API に精通しています。後者は、ローカル エンドポイントを所有するプロセスのプロセス ID も提供します。したがって、上記は、私が信じていることを正確に示していない可能性があります:)

もちろん、tcp ソケットが作成される直前または直後に通知を受ける必要がある場合、またはその状態が変化する場合は、残念ながら .NET で記述できないカーネル モード ドライバーが必要になります。

于 2010-04-14T15:03:34.973 に答える
1

イベント ベースのメカニズムが本当に必要な場合は、Windows のイベント トレースが最適です。あなたはそれが単なる好みだと言ったので:) Windows API(c / c ++)を使用してこれを書くのが最善です。

http://msdn.microsoft.com/en-us/library/aa964766(v=vs.85).aspx

.NET 3.5 以降では、System.Diagnostics.Eventing 名前空間を使用して、.NET 経由でイベント トレースの一部にアクセスできます。これが .NET 4.0 で改善されたことを理解しています。私はこれを自分で調べていないので、TCP 接続の検出が可能かどうかはわかりません。

Windows API と ETW でやりたいことができることは確かです。

于 2012-02-23T15:51:40.677 に答える