Ping.Send メソッド

定義

ICMP (インターネット制御メッセージ プロトコル) エコー メッセージをリモート コンピューターに送信し、そのリモート コンピューターから対応する ICMP エコー応答メッセージを受信します。

オーバーロード

Send(String, TimeSpan, Byte[], PingOptions)

インターネット制御メッセージ プロトコル (ICMP) エコー メッセージを指定されたコンピューターに送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信しようとします。

Send(String, Int32, Byte[], PingOptions)

指定されたデータ バッファーと共に ICMP (インターネット制御メッセージ プロトコル) エコー メッセージを指定されたコンピューターに送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。 このオーバーロードを使用して、操作のタイムアウト値を指定し、ICMP パケットのフラグメンテーションと有効期間 (TTL: time-to-live) 値を制御できます。

Send(IPAddress, TimeSpan, Byte[], PingOptions)

指定した IPAddressを持つコンピューターにインターネット制御メッセージ プロトコル (ICMP) エコー メッセージを送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信しようとします。

Send(IPAddress, Int32, Byte[], PingOptions)

指定された IPAddress を持つコンピューターに、指定されたデータ バッファーと共に ICMP (インターネット制御メッセージ プロトコル) エコー メッセージを送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。 このオーバーロードを使用して、操作のタイムアウト値を指定し、ICMP エコー メッセージ パケットのフラグメンテーションと有効期間 (TTL: time-to-live) の値を制御できます。

Send(String, Int32, Byte[])

指定されたデータ バッファーと共に ICMP (インターネット制御メッセージ プロトコル) エコー メッセージを指定されたコンピューターに送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。 このオーバーロードを使用して、操作のタイムアウト値を指定できます。

Send(IPAddress, Int32, Byte[])

指定された IPAddress を持つコンピューターに、指定されたデータ バッファーと共に ICMP (インターネット制御メッセージ プロトコル) エコー メッセージを送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。 このオーバーロードを使用して、操作のタイムアウト値を指定できます。

Send(String, Int32)

ICMP (インターネット制御メッセージ プロトコル) エコー メッセージを指定されたコンピューターに送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。 このメソッドを使用して、操作のタイムアウト値を指定できます。

Send(IPAddress, Int32)

指定された IPAddress を持つコンピューターに、指定されたデータ バッファーと共に ICMP (インターネット制御メッセージ プロトコル) エコー メッセージを送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。 このメソッドを使用して、操作のタイムアウト値を指定できます。

Send(String)

ICMP (インターネット制御メッセージ プロトコル) エコー メッセージを指定されたコンピューターに送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。

Send(IPAddress)

指定した IPAddress を持つコンピューターに ICMP (インターネット制御メッセージ プロトコル) エコー メッセージを送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。

注釈

いずれかの Send オーバーロードによって返される IP アドレスは、悪意のあるリモート コンピューターから生成される可能性があります。 これを使用してリモート コンピューターに接続しないでください。 DNS を使用して、接続先のマシンの IP アドレスを確認します。

Send(String, TimeSpan, Byte[], PingOptions)

インターネット制御メッセージ プロトコル (ICMP) エコー メッセージを指定されたコンピューターに送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信しようとします。

public:
 System::Net::NetworkInformation::PingReply ^ Send(System::String ^ hostNameOrAddress, TimeSpan timeout, cli::array <System::Byte> ^ buffer, System::Net::NetworkInformation::PingOptions ^ options);
public System.Net.NetworkInformation.PingReply Send (string hostNameOrAddress, TimeSpan timeout, byte[]? buffer, System.Net.NetworkInformation.PingOptions? options);
member this.Send : string * TimeSpan * byte[] * System.Net.NetworkInformation.PingOptions -> System.Net.NetworkInformation.PingReply
Public Function Send (hostNameOrAddress As String, timeout As TimeSpan, buffer As Byte(), options As PingOptions) As PingReply

パラメーター

hostNameOrAddress
String

ICMP エコー メッセージの送信先コンピューターを識別する String。 このパラメーターの値には、ホスト名または IP アドレスの文字列形式を指定できます。

timeout
TimeSpan

ICMP エコー応答メッセージを待機する最大時間 (エコー メッセージの送信後) を指定する 値。

buffer
Byte[]

ICMP エコー メッセージと共に送信されるデータが格納され、ICMP エコー応答メッセージで返される Byte 配列。 配列には、65,500 バイトを超えるデータを格納することはできません。

options
PingOptions

ICMP エコー メッセージ パケットのフラグメンテーションと有効期間 (TTL: time-to-live) の値を制御するために使用される PingOptions オブジェクト。

戻り値

ICMP エコー応答メッセージ (受信した場合)、またはメッセージが受信されなかった場合のエラーの理由に関する情報。

例外

bufferまたは hostNameOrAddress が または hostNameOrAddressnull が空の文字列 ("") です。

timeout は、0 ミリ秒未満またはミリ秒より MaxValue 大きい時間を表します。

bufferのサイズが 65,500 バイトを超えています。

SendAsync の呼び出しが進行中です。

ICMP メッセージの送信中または受信中に例外がスローされました。 スローされた実際の例外については内部例外を参照してください。

このオブジェクトは破棄されました。

適用対象

Send(String, Int32, Byte[], PingOptions)

指定されたデータ バッファーと共に ICMP (インターネット制御メッセージ プロトコル) エコー メッセージを指定されたコンピューターに送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。 このオーバーロードを使用して、操作のタイムアウト値を指定し、ICMP パケットのフラグメンテーションと有効期間 (TTL: time-to-live) 値を制御できます。

public:
 System::Net::NetworkInformation::PingReply ^ Send(System::String ^ hostNameOrAddress, int timeout, cli::array <System::Byte> ^ buffer, System::Net::NetworkInformation::PingOptions ^ options);
public System.Net.NetworkInformation.PingReply Send (string hostNameOrAddress, int timeout, byte[] buffer, System.Net.NetworkInformation.PingOptions? options);
public System.Net.NetworkInformation.PingReply Send (string hostNameOrAddress, int timeout, byte[] buffer, System.Net.NetworkInformation.PingOptions options);
member this.Send : string * int * byte[] * System.Net.NetworkInformation.PingOptions -> System.Net.NetworkInformation.PingReply
Public Function Send (hostNameOrAddress As String, timeout As Integer, buffer As Byte(), options As PingOptions) As PingReply

パラメーター

hostNameOrAddress
String

ICMP エコー メッセージの送信先コンピューターを識別する String。 このパラメーターの値には、ホスト名または IP アドレスの文字列形式を指定できます。

timeout
Int32

エコー メッセージを送信してから ICMP エコー応答メッセージを待つ時間の最大値 (ミリ秒単位) を指定する Int32 値。

buffer
Byte[]

ICMP エコー メッセージと共に送信されるデータが格納され、ICMP エコー応答メッセージで返される Byte 配列。 配列には、65,500 バイトを超えるデータを格納することはできません。

options
PingOptions

ICMP エコー メッセージ パケットのフラグメンテーションと有効期間 (TTL: time-to-live) の値を制御するために使用される PingOptions オブジェクト。

戻り値

ICMP エコー応答メッセージが受信された場合は、そのメッセージに関する情報を提供し、メッセージが受信されなかった場合は、エラーの原因を提供する PingReply オブジェクト。

例外

buffer のサイズが 65500 バイトを超えています。

hostNameOrAddress または null が長さ 0 の文字列です。

- または -

buffernull です。

timeout が 0 未満です。

SendAsync の呼び出しを実行中です。

ICMP メッセージの送信中または受信中に例外がスローされました。 スローされた実際の例外については内部例外を参照してください。

このオブジェクトは破棄されました。

Linux 上の .NET 7 以降のバージョンのみ: プロセスは特権を持たず、 buffer 空ではありません。

次のコード例は、このメソッドを呼び出す方法を示しています。

void ComplexPing()
{
   Ping ^ pingSender = gcnew Ping;
   
   // Create a buffer of 32 bytes of data to be transmitted.
   String^ data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
   array<Byte>^buffer = Encoding::ASCII->GetBytes( data );
   
   // Wait 10 seconds for a reply.
   int timeout = 10000;
   
   // Set options for transmission:
   // The data can go through 64 gateways or routers
   // before it is destroyed, and the data packet
   // cannot be fragmented.
   PingOptions ^ options = gcnew PingOptions( 64,true );
   
   // Send the request.
   PingReply ^ reply = pingSender->Send( "www.contoso.com", 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 );
   }
   else
   {
      Console::WriteLine( reply->Status );
   }
}
public static void ComplexPing ()
{
    Ping pingSender = new Ping ();

    // Create a buffer of 32 bytes of data to be transmitted.
    string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
    byte[] buffer = Encoding.ASCII.GetBytes (data);

    // Wait 10 seconds for a reply.
    int timeout = 10000;

    // Set options for transmission:
    // The data can go through 64 gateways or routers
    // before it is destroyed, and the data packet
    // cannot be fragmented.
    PingOptions options = new PingOptions (64, true);

    // Send the request.
    PingReply reply = pingSender.Send ("www.contoso.com", 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);
    }
    else
    {
        Console.WriteLine (reply.Status);
    }
}

注釈

パラメーターで timeout 指定された時間内に ICMP エコー応答メッセージが受信されない場合、ICMP エコーは失敗し Status 、 プロパティは に TimedOut設定されます。

注意

に非常に小さい数値 timeoutを指定すると、ミリ秒が経過した場合 timeout でも Ping 応答を受信できます。

プロパティが DontFragmenttrue 、合計パケット サイズが、ローカル コンピューターとリモート コンピューター間のルーティング ノードの 1 つによって送信できる最大パケット サイズを超えた場合、ICMP エコー要求は失敗します。 この場合、 Status は に PacketTooBig設定されます。

プロパティを Ttl 使用して、ICMP エコー メッセージを送信先に到達するまでに転送できる最大回数を指定します。 指定した回数だけ転送された後にパケットが宛先に到達しない場合、パケットは破棄され、ICMP エコー要求は失敗します。 この場合、 Status は に TtlExpired設定されます。

適用対象

Send(IPAddress, TimeSpan, Byte[], PingOptions)

指定した IPAddressを持つコンピューターにインターネット制御メッセージ プロトコル (ICMP) エコー メッセージを送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信しようとします。

public:
 System::Net::NetworkInformation::PingReply ^ Send(System::Net::IPAddress ^ address, TimeSpan timeout, cli::array <System::Byte> ^ buffer, System::Net::NetworkInformation::PingOptions ^ options);
public System.Net.NetworkInformation.PingReply Send (System.Net.IPAddress address, TimeSpan timeout, byte[]? buffer, System.Net.NetworkInformation.PingOptions? options);
member this.Send : System.Net.IPAddress * TimeSpan * byte[] * System.Net.NetworkInformation.PingOptions -> System.Net.NetworkInformation.PingReply
Public Function Send (address As IPAddress, timeout As TimeSpan, buffer As Byte(), options As PingOptions) As PingReply

パラメーター

address
IPAddress

ICMP エコー メッセージの送信先コンピューターを識別する IPAddress

timeout
TimeSpan

ICMP エコー応答メッセージを待機する最大時間 (エコー メッセージの送信後) を指定する 値。

buffer
Byte[]

ICMP エコー メッセージと共に送信されるデータが格納され、ICMP エコー応答メッセージで返される Byte 配列。 配列には、65,500 バイトを超えるデータを格納することはできません。

options
PingOptions

ICMP エコー メッセージ パケットのフラグメンテーションと有効期間 (TTL: time-to-live) の値を制御するために使用される PingOptions オブジェクト。

戻り値

ICMP エコー応答メッセージ (受信した場合)、またはメッセージが受信されなかった場合のエラーの理由に関する情報。

例外

address または buffernull です。

timeout は、0 ミリ秒未満またはミリ秒より MaxValue 大きい時間を表します。

bufferのサイズが 65,500 バイトを超えています。

SendAsync の呼び出しが進行中です。

ICMP メッセージの送信中または受信中に例外がスローされました。 スローされた実際の例外については内部例外を参照してください。

このオブジェクトは破棄されました。

適用対象

Send(IPAddress, Int32, Byte[], PingOptions)

指定された IPAddress を持つコンピューターに、指定されたデータ バッファーと共に ICMP (インターネット制御メッセージ プロトコル) エコー メッセージを送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。 このオーバーロードを使用して、操作のタイムアウト値を指定し、ICMP エコー メッセージ パケットのフラグメンテーションと有効期間 (TTL: time-to-live) の値を制御できます。

public:
 System::Net::NetworkInformation::PingReply ^ Send(System::Net::IPAddress ^ address, int timeout, cli::array <System::Byte> ^ buffer, System::Net::NetworkInformation::PingOptions ^ options);
public System.Net.NetworkInformation.PingReply Send (System.Net.IPAddress address, int timeout, byte[] buffer, System.Net.NetworkInformation.PingOptions? options);
public System.Net.NetworkInformation.PingReply Send (System.Net.IPAddress address, int timeout, byte[] buffer, System.Net.NetworkInformation.PingOptions options);
member this.Send : System.Net.IPAddress * int * byte[] * System.Net.NetworkInformation.PingOptions -> System.Net.NetworkInformation.PingReply
Public Function Send (address As IPAddress, timeout As Integer, buffer As Byte(), options As PingOptions) As PingReply

パラメーター

address
IPAddress

ICMP エコー メッセージの送信先コンピューターを識別する IPAddress

timeout
Int32

エコー メッセージを送信してから ICMP エコー応答メッセージを待つ時間の最大値 (ミリ秒単位) を指定する Int32 値。

buffer
Byte[]

ICMP エコー メッセージと共に送信されるデータが格納され、ICMP エコー応答メッセージで返される Byte 配列。 配列には、65,500 バイトを超えるデータを格納することはできません。

options
PingOptions

ICMP エコー メッセージ パケットのフラグメンテーションと有効期間 (TTL: time-to-live) の値を制御するために使用される PingOptions オブジェクト。

戻り値

ICMP エコー応答メッセージが受信された場合は、そのメッセージに関する情報を提供し、メッセージが受信されなかった場合は、エラーの原因を提供する PingReply オブジェクト。 パケットが MTU (Maximum Transmission Unit) を超えている場合、このメソッドは PacketTooBig を返します。

例外

buffer のサイズが 65500 バイトを超えています。

address または buffernull です。

timeout が 0 未満です。

SendAsync の呼び出しを実行中です。

ICMP メッセージの送信中または受信中に例外がスローされました。 スローされた実際の例外については内部例外を参照してください。

このオブジェクトは破棄されました。

Linux 上の .NET 7 以降のバージョンのみ: プロセスは特権を持たず、 buffer 空ではありません。

次のコード例は、このメソッドを呼び出す方法を示しています。

void ComplexLocalPing()
{
   
   // Ping's the local machine.
   Ping ^ pingSender = gcnew Ping;
   IPAddress^ address = IPAddress::Loopback;
   
   // Create a buffer of 32 bytes of data to be transmitted.
   String^ data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
   array<Byte>^buffer = Encoding::ASCII->GetBytes( data );
   
   // Wait 10 seconds for a reply.
   int timeout = 10000;
   
   // Set options for transmission:
   // The data can go through 64 gateways or routers
   // before it is destroyed, and the data packet
   // cannot be fragmented.
   PingOptions ^ options = gcnew PingOptions( 64,true );
   PingReply ^ reply = pingSender->Send( address, 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 );
   }
   else
   {
      Console::WriteLine( reply->Status );
   }
}
public static void ComplexLocalPing ()
{
    // Ping's the local machine.
    Ping pingSender = new Ping ();
    IPAddress address = IPAddress.Loopback;

    // Create a buffer of 32 bytes of data to be transmitted.
    string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
    byte[] buffer = Encoding.ASCII.GetBytes (data);

    // Wait 10 seconds for a reply.
    int timeout = 10000;

    // Set options for transmission:
    // The data can go through 64 gateways or routers
    // before it is destroyed, and the data packet
    // cannot be fragmented.
    PingOptions options = new PingOptions (64, true);
    PingReply reply = pingSender.Send (address, 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);
    }
    else
    {
        Console.WriteLine (reply.Status);
    }
}

注釈

パラメーターで指定された timeout 時間内に ICMP エコー応答メッセージが受信されない場合、ICMP エコーは失敗し Status 、 プロパティは に TimedOut設定されます。

注意

に非常に小さい数値 timeoutを指定すると、ミリ秒が経過した場合 timeout でも Ping 応答を受信できます。

プロパティが DontFragmenttrue 、合計パケット サイズが、ローカル コンピューターとリモート コンピューター間のルーティング ノードのいずれかによって送信できる最大パケット サイズを超えた場合、ICMP エコー要求は失敗します。 この場合、 Status は に PacketTooBig設定されます。

プロパティを Ttl 使用して、ICMP エコー メッセージを転送先に到達するまでに転送できる最大回数を指定します。 指定した回数だけ転送された後にパケットが宛先に到達しない場合、パケットは破棄され、ICMP エコー要求は失敗します。 この場合、 Status は に TtlExpired設定されます。

適用対象

Send(String, Int32, Byte[])

指定されたデータ バッファーと共に ICMP (インターネット制御メッセージ プロトコル) エコー メッセージを指定されたコンピューターに送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。 このオーバーロードを使用して、操作のタイムアウト値を指定できます。

public:
 System::Net::NetworkInformation::PingReply ^ Send(System::String ^ hostNameOrAddress, int timeout, cli::array <System::Byte> ^ buffer);
public System.Net.NetworkInformation.PingReply Send (string hostNameOrAddress, int timeout, byte[] buffer);
member this.Send : string * int * byte[] -> System.Net.NetworkInformation.PingReply
Public Function Send (hostNameOrAddress As String, timeout As Integer, buffer As Byte()) As PingReply

パラメーター

hostNameOrAddress
String

ICMP エコー メッセージの送信先コンピューターを識別する String。 このパラメーターの値には、ホスト名または IP アドレスの文字列形式を指定できます。

timeout
Int32

エコー メッセージを送信してから ICMP エコー応答メッセージを待つ時間の最大値 (ミリ秒単位) を指定する Int32 値。

buffer
Byte[]

ICMP エコー メッセージと共に送信されるデータが格納され、ICMP エコー応答メッセージで返される Byte 配列。 配列には、65,500 バイトを超えるデータを格納することはできません。

戻り値

ICMP エコー応答メッセージが受信された場合は、そのメッセージに関する情報を提供し、メッセージが受信されなかった場合は、エラーの原因を提供する PingReply オブジェクト。

例外

buffer のサイズが 65500 バイトを超えています。

hostNameOrAddressnull または空の文字列 ("") です。

- または -

buffernull です。

timeout が 0 未満です。

SendAsync の呼び出しを実行中です。

ICMP メッセージの送信中または受信中に例外がスローされました。 スローされた実際の例外については内部例外を参照してください。

このオブジェクトは破棄されました。

Linux 上の .NET 7 以降のバージョンのみ: プロセスは特権を持たず、 buffer 空ではありません。

オーバーロードを呼び出す Send 方法を示す例については、クラスの概要に関するページを Ping 参照してください。

注釈

パラメーターで指定された timeout 時間内に ICMP エコー応答メッセージが受信されない場合、ICMP エコーは失敗し Status 、 プロパティは に TimedOut設定されます。

注意

に非常に小さい数値 timeoutを指定すると、ミリ秒が経過した場合 timeout でも Ping 応答を受信できます。

このオーバーロードでは、パケットの断片化とパケット転送に既定の設定が使用されます。 ICMP エコー メッセージを含むパケットは、合計パケット サイズが、ローカル コンピューターとリモート コンピューター間のルーティング ノードのいずれかによって送信できる最大パケット サイズを超えた場合に、転送中に断片化される可能性があります。 断片化を防ぐには、 パラメーターを Send 受け取る options メソッドのいずれかを使用し、 プロパティを DontFragmenttrue設定します。 DontFragmentが でtrue、合計パケット サイズが、ローカル コンピューターとリモート コンピューター間のルーティング ノードのいずれかによって送信できる最大パケット サイズを超えると、ICMP エコー要求は失敗します。 この場合、 Status は に PacketTooBig設定されます。

パケットまたはパケット フラグメントは、破棄される前にノードを 128 回ルーティングすることで転送できます。 この設定を変更するには、パラメーターを Send 受け取るオーバーロードを options 使用し、 プロパティを Ttl 目的の値に設定します。 指定した回数だけ転送された後にパケットが宛先に到達しない場合、パケットは破棄され、ICMP エコー要求は失敗します。 この場合、 Status は に TtlExpired設定されます。

適用対象

Send(IPAddress, Int32, Byte[])

指定された IPAddress を持つコンピューターに、指定されたデータ バッファーと共に ICMP (インターネット制御メッセージ プロトコル) エコー メッセージを送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。 このオーバーロードを使用して、操作のタイムアウト値を指定できます。

public:
 System::Net::NetworkInformation::PingReply ^ Send(System::Net::IPAddress ^ address, int timeout, cli::array <System::Byte> ^ buffer);
public System.Net.NetworkInformation.PingReply Send (System.Net.IPAddress address, int timeout, byte[] buffer);
member this.Send : System.Net.IPAddress * int * byte[] -> System.Net.NetworkInformation.PingReply
Public Function Send (address As IPAddress, timeout As Integer, buffer As Byte()) As PingReply

パラメーター

address
IPAddress

ICMP エコー メッセージの送信先コンピューターを識別する IPAddress

timeout
Int32

エコー メッセージを送信してから ICMP エコー応答メッセージを待つ時間の最大値 (ミリ秒単位) を指定する Int32 値。

buffer
Byte[]

ICMP エコー メッセージと共に送信されるデータが格納され、ICMP エコー応答メッセージで返される Byte 配列。 配列には、65,500 バイトを超えるデータを格納することはできません。

戻り値

ICMP エコー応答メッセージが受信された場合は、そのメッセージに関する情報を提供し、メッセージが受信されなかった場合は、エラーの原因を提供する PingReply オブジェクト。 パケットが MTU (Maximum Transmission Unit) を超えている場合、このメソッドは PacketTooBig を返します。

例外

buffer のサイズが 65500 バイトを超えています。

address または buffernull です。

timeout が 0 未満です。

SendAsync の呼び出しを実行中です。

ICMP メッセージの送信中または受信中に例外がスローされました。 スローされた実際の例外については内部例外を参照してください。

このオブジェクトは破棄されました。

Linux 上の .NET 7 以降のバージョンのみ: プロセスは特権を持たず、 buffer 空ではありません。

次のコード例では、このメソッドを呼び出す方法を示します。

void LocalPingTimeout()
{
   
   // Ping's the local machine.
   Ping ^ pingSender = gcnew Ping;
   IPAddress^ address = IPAddress::Loopback;
   
   // Create a buffer of 32 bytes of data to be transmitted.
   String^ data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
   array<Byte>^buffer = Encoding::ASCII->GetBytes( data );
   
   // Wait 10 seconds for a reply.
   int timeout = 10000;
   PingReply ^ reply = pingSender->Send( address, timeout, buffer);
   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 );
   }
   else
   {
      Console::WriteLine( reply->Status );
   }
}
public static void LocalPingTimeout ()
{
    // Ping's the local machine.
    Ping pingSender = new Ping ();
    IPAddress address = IPAddress.Loopback;

    // Create a buffer of 32 bytes of data to be transmitted.
    string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
    byte[] buffer = Encoding.ASCII.GetBytes (data);

    // Wait 10 seconds for a reply.
    int timeout = 10000;
    PingReply reply = pingSender.Send (address, timeout, buffer);

    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);
    }
    else
    {
        Console.WriteLine (reply.Status);
    }
}

注釈

パラメーターで指定された timeout 時間内に ICMP エコー応答メッセージが受信されない場合、ICMP エコーは失敗し Status 、 プロパティは に TimedOut設定されます。

注意

に非常に小さい数値 timeoutを指定すると、ミリ秒が経過した場合 timeout でも Ping 応答を受信できます。

このオーバーロードでは、パケットの断片化とパケット転送に既定の設定が使用されます。 ICMP エコー メッセージを含むパケットは、合計パケット サイズが、ローカル コンピューターとリモート コンピューター間のルーティング ノードのいずれかによって送信できる最大パケット サイズを超えた場合に、転送中に断片化される可能性があります。 断片化を防ぐには、 パラメーターを Send 受け取る options メソッドのいずれかを使用し、 プロパティを DontFragmenttrue設定します。 DontFragmentが でtrue、合計パケット サイズが、ローカル コンピューターとリモート コンピューター間のルーティング ノードのいずれかによって送信できる最大パケット サイズを超えると、ICMP エコー要求は失敗します。 この場合、 Status は に PacketTooBig設定されます。

パケットまたはパケット フラグメントは、破棄される前にノードを 128 回ルーティングすることで転送できます。 この設定を変更するには、パラメーターを Send 受け取るオーバーロードを options 使用し、 プロパティを Ttl 目的の値に設定します。 指定した回数だけ転送された後にパケットが宛先に到達しない場合、パケットは破棄され、ICMP エコー要求は失敗します。 この場合、 Status は に TtlExpired設定されます。

適用対象

Send(String, Int32)

ICMP (インターネット制御メッセージ プロトコル) エコー メッセージを指定されたコンピューターに送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。 このメソッドを使用して、操作のタイムアウト値を指定できます。

public:
 System::Net::NetworkInformation::PingReply ^ Send(System::String ^ hostNameOrAddress, int timeout);
public System.Net.NetworkInformation.PingReply Send (string hostNameOrAddress, int timeout);
member this.Send : string * int -> System.Net.NetworkInformation.PingReply
Public Function Send (hostNameOrAddress As String, timeout As Integer) As PingReply

パラメーター

hostNameOrAddress
String

ICMP エコー メッセージの送信先コンピューターを識別する String。 このパラメーターの値には、ホスト名または IP アドレスの文字列形式を指定できます。

timeout
Int32

エコー メッセージを送信してから ICMP エコー応答メッセージを待つ時間の最大値 (ミリ秒単位) を指定する Int32 値。

戻り値

ICMP エコー応答メッセージが受信された場合は、そのメッセージに関する情報を提供し、メッセージが受信されなかった場合は、エラーの原因を提供する PingReply オブジェクト。

例外

hostNameOrAddressnull または空の文字列 ("") です。

timeout が 0 未満です。

SendAsync の呼び出しを実行中です。

ICMP メッセージの送信中または受信中に例外がスローされました。 スローされた実際の例外については内部例外を参照してください。

このオブジェクトは破棄されました。

メソッドの呼び出し Send を示す例については、クラスの概要に関するページを Ping 参照してください。

注釈

パラメーターで指定された timeout 時間内に ICMP エコー応答メッセージが受信されない場合、ICMP エコーは失敗し Status 、 プロパティは に TimedOut設定されます。

注意

に非常に小さい数値 timeoutを指定すると、ミリ秒が経過した場合 timeout でも Ping 応答を受信できます。

このオーバーロードでは、パケットの断片化とパケット転送に既定の設定が使用されます。 ICMP エコー メッセージを含むパケットは、合計パケット サイズが、ローカル コンピューターとリモート コンピューター間のルーティング ノードのいずれかによって送信できる最大パケット サイズを超えた場合に、転送中に断片化される可能性があります。 断片化を防ぐには、 パラメーターを Send 受け取る options メソッドのいずれかを使用し、 プロパティを DontFragmenttrue設定します。 DontFragmentが でtrue、合計パケット サイズが、ローカル コンピューターとリモート コンピューター間のルーティング ノードのいずれかによって送信できる最大パケット サイズを超えると、ICMP エコー要求は失敗します。 この場合、 Status は に PacketTooBig設定されます。 パケットまたはパケット フラグメント (フラグメント化されている場合) は、破棄される前にノードを 128 回ルーティングすることで転送できます。 この設定を変更するには、パラメーターを Send 受け取るオーバーロードを options 使用し、 プロパティを Ttl 目的の値に設定します。 指定した回数だけ転送された後にパケットが宛先に到達しない場合、パケットは破棄され、ICMP エコー要求は失敗します。 この場合、 Status は に TtlExpired設定されます。

適用対象

Send(IPAddress, Int32)

指定された IPAddress を持つコンピューターに、指定されたデータ バッファーと共に ICMP (インターネット制御メッセージ プロトコル) エコー メッセージを送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。 このメソッドを使用して、操作のタイムアウト値を指定できます。

public:
 System::Net::NetworkInformation::PingReply ^ Send(System::Net::IPAddress ^ address, int timeout);
public System.Net.NetworkInformation.PingReply Send (System.Net.IPAddress address, int timeout);
member this.Send : System.Net.IPAddress * int -> System.Net.NetworkInformation.PingReply
Public Function Send (address As IPAddress, timeout As Integer) As PingReply

パラメーター

address
IPAddress

ICMP エコー メッセージの送信先コンピューターを識別する IPAddress

timeout
Int32

エコー メッセージを送信してから ICMP エコー応答メッセージを待つ時間の最大値 (ミリ秒単位) を指定する Int32 値。

戻り値

ICMP エコー応答メッセージが受信された場合は、そのメッセージに関する情報を提供し、メッセージが受信されなかった場合は、エラーの原因を提供する PingReply オブジェクト。

例外

addressnullです。

timeout が 0 未満です。

SendAsync の呼び出しを実行中です。

ICMP メッセージの送信中または受信中に例外がスローされました。 スローされた実際の例外については内部例外を参照してください。

このオブジェクトは破棄されました。

メソッドの呼び出し Send を示す例については、クラスの概要に関するページを Ping 参照してください。

注釈

パラメーターで指定された timeout 時間内に ICMP エコー応答メッセージが受信されない場合、ICMP エコーは失敗し Status 、 プロパティは に TimedOut設定されます。

注意

に非常に小さい数値 timeoutを指定すると、ミリ秒が経過した場合 timeout でも Ping 応答を受信できます。

このオーバーロードでは、パケットの断片化とパケット転送に既定の設定が使用されます。 ICMP エコー メッセージを含むパケットは、合計パケット サイズが、ローカル コンピューターとリモート コンピューター間のルーティング ノードの 1 つによって送信できる最大パケット サイズを超えた場合に、転送中に断片化される可能性があります。 断片化を防ぐには、 パラメーターを Send 受け取る options メソッドのいずれかを使用し、 プロパティを DontFragmenttrue設定します。 DontFragmentが でtrue、合計パケット サイズが、ローカル コンピューターとリモート コンピューター間のルーティング ノードの 1 つによって送信できる最大パケット サイズを超えると、ICMP エコー要求は失敗します。 この場合、 Status は に PacketTooBig設定されます。

パケットまたはパケット フラグメントは、破棄される前にノードを 128 回ルーティングすることによって転送できます。 この設定を変更するには、パラメーターを Send 受け取るオーバーロードを options 使用し、 プロパティを Ttl 目的の値に設定します。 指定した回数だけ転送された後にパケットが宛先に到達しない場合、パケットは破棄され、ICMP エコー要求は失敗します。 この場合、 Status は に TtlExpired設定されます。

適用対象

Send(String)

ICMP (インターネット制御メッセージ プロトコル) エコー メッセージを指定されたコンピューターに送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。

public:
 System::Net::NetworkInformation::PingReply ^ Send(System::String ^ hostNameOrAddress);
public System.Net.NetworkInformation.PingReply Send (string hostNameOrAddress);
member this.Send : string -> System.Net.NetworkInformation.PingReply
Public Function Send (hostNameOrAddress As String) As PingReply

パラメーター

hostNameOrAddress
String

ICMP エコー メッセージの送信先コンピューターを識別する String。 このパラメーターの値には、ホスト名または IP アドレスの文字列形式を指定できます。

戻り値

ICMP エコー応答メッセージが受信された場合は、そのメッセージに関する情報を提供し、メッセージが受信されなかった場合は、エラーの原因を提供する PingReply オブジェクト。

例外

hostNameOrAddressnull または空の文字列 ("") です。

SendAsync の呼び出しを実行中です。

ICMP メッセージの送信中または受信中に例外がスローされました。 スローされた実際の例外については内部例外を参照してください。

このオブジェクトは破棄されました。

次のコード例は、このメソッドの呼び出しを示しています。

void SimplePing()
{
   Ping ^ pingSender = gcnew Ping;
   PingReply ^ reply = pingSender->Send( "www.contoso.com" );
   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 );
   }
   else
   {
      Console::WriteLine( reply->Status );
   }
}
public static void SimplePing ()
{
    Ping pingSender = new Ping ();
    PingReply reply = pingSender.Send ("www.contoso.com");

    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);
    }
    else
    {
        Console.WriteLine (reply.Status);
    }
}

注釈

このメソッドは、ICMP エコー メッセージを含む 32 Byte データ バッファーを送信します。 メソッドは、ICMP エコー応答メッセージを 5 秒間待機します。 その時点で応答を受け取らない場合、 メソッドは を返し、 Status プロパティは に TimedOut設定されます。

このオーバーロードでは、パケットの断片化とパケット転送に既定の設定が使用されます。 ICMP エコー メッセージを含むパケットは、合計パケット サイズが、ローカル コンピューターとリモート コンピューター間のルーティング ノードの 1 つによって送信できる最大パケット サイズを超えた場合に、転送中に断片化される可能性があります。 断片化を防ぐには、 パラメーターを Send 受け取る options メソッドのいずれかを使用し、 プロパティを DontFragmenttrue設定します。 DontFragmentが でtrue、合計パケット サイズが、ローカル コンピューターとリモート コンピューター間のルーティング ノードの 1 つによって送信できる最大パケット サイズを超えると、ICMP エコー要求は失敗します。 この場合、 Status は に PacketTooBig設定されます。 パケットまたはパケット フラグメント (フラグメント化されている場合) は、破棄される前にノードを 128 回ルーティングすることで転送できます。 この設定を変更するには、パラメーターを Send 受け取るオーバーロードを options 使用し、 プロパティを Ttl 目的の値に設定します。 指定した回数だけ転送された後にパケットが宛先に到達しない場合、パケットは破棄され、ICMP エコー要求は失敗します。 この場合、 Status は に TtlExpired設定されます。

適用対象

Send(IPAddress)

指定した IPAddress を持つコンピューターに ICMP (インターネット制御メッセージ プロトコル) エコー メッセージを送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。

public:
 System::Net::NetworkInformation::PingReply ^ Send(System::Net::IPAddress ^ address);
public System.Net.NetworkInformation.PingReply Send (System.Net.IPAddress address);
member this.Send : System.Net.IPAddress -> System.Net.NetworkInformation.PingReply
Public Function Send (address As IPAddress) As PingReply

パラメーター

address
IPAddress

ICMP エコー メッセージの送信先コンピューターを識別する IPAddress

戻り値

ICMP エコー応答メッセージが受信された場合は、そのメッセージに関する情報を提供し、メッセージが受信されなかった場合は、エラー原因の説明を提供する PingReply オブジェクト。

例外

addressnullです。

SendAsync の呼び出しを実行中です。

ICMP メッセージの送信中または受信中に例外がスローされました。 スローされた実際の例外については内部例外を参照してください。

このオブジェクトは破棄されました。

次のコード例は、このメソッドの呼び出しを示しています。

void LocalPing()
{
   
   // Ping's the local machine.
   Ping ^ pingSender = gcnew Ping;
   IPAddress^ address = IPAddress::Loopback;
   PingReply ^ reply = pingSender->Send( address );
   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 );
   }
   else
   {
      Console::WriteLine( reply->Status );
   }
}
public static void LocalPing ()
{
    // Ping's the local machine.
    Ping pingSender = new Ping ();
    IPAddress address = IPAddress.Loopback;
    PingReply reply = pingSender.Send (address);

    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);
    }
    else
    {
        Console.WriteLine (reply.Status);
    }
}

注釈

このメソッドは、ICMP エコー メッセージを含む 32 Byte データ バッファーでaddress指定されたホストに送信します。 メソッドは、ICMP エコー応答メッセージを 5 秒間待機します。 その時点で応答を受け取らない場合、 メソッドは を返し、 Status プロパティは に TimedOut設定されます。

このオーバーロードでは、パケットの断片化とパケット転送に既定の設定が使用されます。 ICMP エコー メッセージを含むパケットは、合計パケット サイズが、ローカル コンピューターとリモート コンピューター間のルーティング ノードの 1 つによって送信できる最大パケット サイズを超えた場合に、転送中に断片化される可能性があります。 断片化を防ぐには、 パラメーターを Send 受け取る options メソッドのいずれかを使用し、 プロパティを DontFragmenttrue設定します。 DontFragmentが でtrue、合計パケット サイズが、ローカル コンピューターとリモート コンピューター間のルーティング ノードの 1 つによって送信できる最大パケット サイズを超えると、ICMP エコー要求は失敗します。 この場合、 Status は に PacketTooBig設定されます。 パケットまたはパケット フラグメント (フラグメント化されている場合) は、破棄される前にノードを 128 回ルーティングすることで転送できます。 この設定を変更するには、パラメーターを Send 受け取るオーバーロードを options 使用し、 プロパティを Ttl 目的の値に設定します。 指定した回数だけ転送された後にパケットが宛先に到達しない場合、パケットは破棄され、ICMP エコー要求は失敗します。 この場合、 Status は に TtlExpired設定されます。

適用対象