PcapDotNetなどを使用して、Microsoft Loopback Adapterがパケットを受信(受信)するようにする必要があります。どうやってやるの?
ありがとう。
PcapDotNetなどを使用して、Microsoft Loopback Adapterがパケットを受信(受信)するようにする必要があります。どうやってやるの?
ありがとう。
あなたの質問は具体的でも非常に詳細でもないので、あなたは幅広い説明を受けるでしょう。Microsoft .Net Framework 4.5には、実際にはこれを処理するためのクラスがありNetworkInterface
ます。
Microsoft Developer Networkは、実際にこれらのクラス要件を詳細に説明しています。
この特定のクラスは、ローカルコンピューター上のネットワークインターフェイス(アダプターとも呼ばれます)のデータをカプセル化します。このクラスのインスタンスは作成しません。GetAllNetworkInterfacesメソッドは、ローカルコンピューターのネットワークインターフェイスごとに、このクラスの1つのインスタンスを含む配列を返します。
ご覧のとおり、半特定の詳細が必要です。そうでない場合、失敗します。接続されていないアダプタを試す可能性があるため。あなたの質問は私に信じさせます、あなたping
は応答があることを確認するためにあなたのローカルアダプタへの有効なパケットを試みています。
NetworkInformation
多数の関連情報を提供する名前空間もあります。非常に単純な実装は次のようになります。
Ping pingSender = new Ping();
PingOptions options = new PingOptions();
// Default Time To Live (TTL) but don't fragment request.
options.DontFragment = true;
// Create a buffer of 32 Bytes:
string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
byte[] buffer = Encoding.ASCII.GetBytes(data);
// Timeout
int timeout = 120;
// Ping and Request Reply
pingReply reply = pingSender.Send(args[0], timeout, buffer, options);
if(reply.Status == IPStatus.Success)
{
Console.WriteLine("Address: {0}, reply.Address.ToString());
Console.WriteLine ("RoundTrip time: {0}", reply.RoundtripTime);
Console.WriteLine ("Time to live: {0}", reply.Options.Ttl);
Console.WriteLine ("Don't fragment: {0}", reply.Options.DontFragment);
Console.WriteLine ("Buffer size: {0}", reply.Buffer.Length);
}
そして、そのPing
リクエストを使用し127.0.0.1
て、現在使用中のネットワークカードへのループバックアドレスにすることができます。
応答は、パケットを受信しているかどうかを示します。
はい、ループバックはカードが使用中であることを知るための応答を受け取るはずです。ただし、ほとんどの場合、無視できます。アドレスは、リクエストを受け取ったときにのみ役立つ情報を表示するためです。
Ping
アイデアが気に入らない場合は、他のオプション。NetworkInterface
変更をリッスンするように設定するだけです。
NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();
foreach(NetworkInterface n in adapters)
{
Console.WriteLine(" {0} is {1}", n.Name, n.OperationalStatus);
}
これらは、カードからの応答をテストするための2つの有効な方法です。上で述べたように、ループバックアドレスにリクエストを具体的に送信しない限り、ループバックはアクティブに何も「受信」しません。
うまくいけば、それがお役に立てば幸いです。