2010-12-29 18 views
7

特定のバイトサイズのping要求を送信するには、コマンドラインでpingを送信するときに -lと同じ方法を指定します。 私に例を挙げてもらえますか?特定のバイト数の特定のバイト数をCで送信する#

また、pingが送信するパケットの量を調べることはできますか?コマンドラインで-nのように入力します。

感謝:)

答えて

8

あなたはICMP echo requestsを送信するためにSystem.Net.NetworkInformation.Pingクラスを使用することができます。それはあなたのパケットサイズと送信されたパケットの数を完全に制御することができます:

using System.Net.NetworkInformation; 

public void PingHost(string host, int packetSize, int packetCount) 
{ 
    int timeout = 1000; // 1 second timeout. 
    byte[] packet = new byte[packetSize]; 
    // Initialize your packet bytes as you see fit. 

    Ping pinger = new Ping(); 
    for (int i = 0; i < packetCount; ++i) { 
     pinger.Send(host, timeout, packet); 
    } 
} 
+0

とにかくコード例が間違っています。あなたはパケットの魔女のサイズが間違っているので、多くのpingを送信します。あなたはtotalSendsに対してforの内部を比較しなければなりません。 –

+0

@SoMos、すてきなキャッチが修正されました。ありがとう:) –

+0

フレデリックハミディありがとう! @ SoMosはあなたにありがとう。 –

0

PingメッセージはSystem.Net.NetworkInformation.Pingクラスを使用してICMPを使用して送信されます。 ここでは、特定のIPまたはWebサイトにpingメッセージを送信する簡単な例を示します。 特定のバイト配列を送信しないと、.Netが自動的にそれ自身のバイト配列を送信します。

例:

Ping objPing = new Ping(); 

    try 
    { 
     PingReply objReply = objPing.Send(txtURL.Text, 1000); 

     if (objReply.Status == IPStatus.Success) 
     { 
      lblProductName.Text = string.Format("<b>Success</b> - IP Address:{0} Time:{1}ms", objReply.Address, objReply.RoundtripTime); 
     } 
     else 
     { 
      lblProductName.Text = objReply.Status.ToString(); 
     } 
    } 
    catch (Exception ex) 
    { 
     lblProductName.Text = ex.Message; 
    } 
+2

あなたのスパムリンクを削除しているMod編集をロールバックしないでください。 –

関連する問題