Ping.SendAsync メソッド

定義

非同期的に ICMP (インターネット制御メッセージ プロトコル) エコー メッセージをコンピューターに送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message to a computer, and receive a corresponding ICMP echo reply message from that computer.

オーバーロード

SendAsync(String, Int32, Byte[], PingOptions, Object)

指定されたコンピューターに、指定されたデータ バッファーと共に ICMP (インターネット制御メッセージ プロトコル) エコー メッセージを非同期的に送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message with the specified data buffer to the specified computer, and receive a corresponding ICMP echo reply message from that computer. このオーバーロードを使用して、操作のタイムアウト値を指定し、ICMP パケットのフラグメンテーションと有効期間 (TTL: time-to-live) 値を制御できます。This overload allows you to specify a time-out value for the operation and control fragmentation and Time-to-Live values for the ICMP packet.

SendAsync(IPAddress, Int32, Byte[], PingOptions, Object)

指定された IPAddress を持つコンピューターに、指定されたデータ バッファーと共に ICMP (インターネット制御メッセージ プロトコル) エコー メッセージを非同期的に送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message with the specified data buffer to the computer that has the specified IPAddress, and receive a corresponding ICMP echo reply message from that computer. このオーバーロードを使用して、操作のタイムアウト値を指定し、ICMP エコー メッセージ パケットのフラグメンテーションと有効期間 (TTL: time-to-live) の値を制御できます。This overload allows you to specify a time-out value for the operation and control fragmentation and Time-to-Live values for the ICMP echo message packet.

SendAsync(String, Int32, Byte[], Object)

指定されたコンピューターに、指定されたデータ バッファーと共に ICMP (インターネット制御メッセージ プロトコル) エコー メッセージを非同期的に送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message with the specified data buffer to the specified computer, and receive a corresponding ICMP echo reply message from that computer. このオーバーロードを使用して、操作のタイムアウト値を指定できます。This overload allows you to specify a time-out value for the operation.

SendAsync(IPAddress, Int32, Byte[], Object)

指定された IPAddress を持つコンピューターに、指定されたデータ バッファーと共に ICMP (インターネット制御メッセージ プロトコル) エコー メッセージを非同期的に送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message with the specified data buffer to the computer that has the specified IPAddress, and receive a corresponding ICMP echo reply message from that computer. このオーバーロードを使用して、操作のタイムアウト値を指定できます。This overload allows you to specify a time-out value for the operation.

SendAsync(IPAddress, Int32, Object)

指定された IPAddress を持つコンピューターに、非同期的に ICMP (インターネット制御メッセージ プロトコル) エコー メッセージを送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message to the computer that has the specified IPAddress, and receive a corresponding ICMP echo reply message from that computer. このオーバーロードを使用して、操作のタイムアウト値を指定できます。This overload allows you to specify a time-out value for the operation.

SendAsync(String, Object)

指定されたコンピューターに、非同期的に ICMP (インターネット制御メッセージ プロトコル) エコー メッセージを送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message to the specified computer, and receive a corresponding ICMP echo reply message from that computer.

SendAsync(IPAddress, Object)

指定された IPAddress を持つコンピューターに、非同期的に ICMP (インターネット制御メッセージ プロトコル) エコー メッセージを送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message to the computer that has the specified IPAddress, and receive a corresponding ICMP echo reply message from that computer.

SendAsync(String, Int32, Object)

指定されたコンピューターに、非同期的に ICMP (インターネット制御メッセージ プロトコル) エコー メッセージを送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message to the specified computer, and receive a corresponding ICMP echo reply message from that computer. このオーバーロードを使用して、操作のタイムアウト値を指定できます。This overload allows you to specify a time-out value for the operation.

注釈

これらのメソッドでは、アプリケーションのメインスレッドがブロックされることはありません。These methods do not cause your application's main thread to block. ICMP エコー応答メッセージの待機中にブロックする場合は、Send メソッドを使用します。If you want to block while waiting for the ICMP echo reply message, use the Send methods.

注意

SendAsync のいずれかの方法によって返される IP アドレスは、悪意のあるリモートコンピューターから送信される可能性があります。The IP address returned by any of the SendAsync methods can originate from a malicious remote computer. このを使用してリモートコンピューターに接続しないでください。Do not connect to the remote computer using this. DNS を使用して、接続先のコンピューターの IP アドレスを決定します。Use DNS to determine the IP address of the machine to which you want to connect.

SendAsync(String, Int32, Byte[], PingOptions, Object)

指定されたコンピューターに、指定されたデータ バッファーと共に ICMP (インターネット制御メッセージ プロトコル) エコー メッセージを非同期的に送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message with the specified data buffer to the specified computer, and receive a corresponding ICMP echo reply message from that computer. このオーバーロードを使用して、操作のタイムアウト値を指定し、ICMP パケットのフラグメンテーションと有効期間 (TTL: time-to-live) 値を制御できます。This overload allows you to specify a time-out value for the operation and control fragmentation and Time-to-Live values for the ICMP packet.

public:
 void SendAsync(System::String ^ hostNameOrAddress, int timeout, cli::array <System::Byte> ^ buffer, System::Net::NetworkInformation::PingOptions ^ options, System::Object ^ userToken);
public void SendAsync (string hostNameOrAddress, int timeout, byte[] buffer, System.Net.NetworkInformation.PingOptions options, object userToken);
member this.SendAsync : string * int * byte[] * System.Net.NetworkInformation.PingOptions * obj -> unit
Public Sub SendAsync (hostNameOrAddress As String, timeout As Integer, buffer As Byte(), options As PingOptions, userToken As Object)

パラメーター

hostNameOrAddress
String

ICMP エコー メッセージの送信先コンピューターを識別する StringA String that identifies the computer that is the destination for the ICMP echo message. このパラメーターの値には、ホスト名または IP アドレスの文字列形式を指定できます。The value specified for this parameter can be a host name or a string representation of an IP address.

timeout
Int32

エコー メッセージを送信してから ICMP エコー応答メッセージを待つ時間の最大値 (ミリ秒単位) を指定する Int32 値。An Int32 value that specifies the maximum number of milliseconds (after sending the echo message) to wait for the ICMP echo reply message.

buffer
Byte[]

ICMP エコー メッセージと共に送信されるデータが格納され、ICMP エコー応答メッセージで返される Byte 配列。A Byte array that contains data to be sent with the ICMP echo message and returned in the ICMP echo reply message. 配列には、65,500 バイトを超えるデータを格納することはできません。The array cannot contain more than 65,500 bytes.

options
PingOptions

ICMP エコー メッセージ パケットのフラグメンテーションと有効期間 (TTL: time-to-live) の値を制御するために使用される PingOptions オブジェクト。A PingOptions object used to control fragmentation and Time-to-Live values for the ICMP echo message packet.

userToken
Object

非同期操作が完了したときに呼び出されるメソッドに渡すオブジェクト。An object that is passed to the method invoked when the asynchronous operation completes.

例外

hostNameOrAddressnull または空の文字列 ("") です。hostNameOrAddress is null or is an empty string ("").

または-or- buffernull です。buffer is null.

timeout に 0 より小さい値が指定されています。timeout is less than zero.

SendAsync の呼び出しを実行中です。A call to SendAsync is in progress.

ICMP メッセージの送信中または受信中に例外がスローされました。An exception was thrown while sending or receiving the ICMP messages. スローされた実際の例外については内部例外を参照してください。See the inner exception for the exact exception that was thrown.

hostNameOrAddress を有効な IP アドレスに解決できませんでした。hostNameOrAddress could not be resolved to a valid IP address.

このオブジェクトは破棄されました。This object has been disposed.

buffer のサイズが 65500 バイトを超えています。The size of buffer exceeds 65500 bytes.

次のコード例は、このメソッドを呼び出す方法を示しています。The following code example demonstrates how to call this method.

#using <System.dll>

using namespace System;
using namespace System::Text;
using namespace System::Net;
using namespace System::Net::NetworkInformation;
using namespace System::ComponentModel;
using namespace System::Threading;
void PingCompletedCallback( Object^ sender, PingCompletedEventArgs^ e );
void DisplayReply( PingReply^ reply );
int main()
{
   array<String^>^args = Environment::GetCommandLineArgs();
   if ( args->Length == 1 )
      throw gcnew ArgumentException( "Ping needs a host or IP Address." );

   String^ who = args[ 1 ];
   AutoResetEvent^ waiter = gcnew AutoResetEvent( false );
   
   Ping ^ pingSender = gcnew Ping;
   
   // When the PingCompleted event is raised,
   // the PingCompletedCallback method is called.
   pingSender->PingCompleted += gcnew PingCompletedEventHandler( PingCompletedCallback );
   
   // Create a buffer of 32 bytes of data to be transmitted.
   String^ data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
   array<Byte>^buffer = Encoding::ASCII->GetBytes( data );
   
   // Wait 12 seconds for a reply.
   int timeout = 12000;
   
   // 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 );
   Console::WriteLine( "Time to live: {0}", options->Ttl );
   Console::WriteLine( "Don't fragment: {0}", options->DontFragment );
   
   // Send the ping asynchronously.
   // Use the waiter as the user token.
   // When the callback completes, it can wake up this thread.
   pingSender->SendAsync( who, timeout, buffer, options, waiter );
   
   // Prevent this example application from ending.
   // A real application should do something useful
   // when possible.
   waiter->WaitOne();
   Console::WriteLine( "Ping example completed." );
}


void PingCompletedCallback( Object^ /*sender*/, PingCompletedEventArgs^ e )
{
   
   // If the operation was canceled, display a message to the user.
   if ( e->Cancelled )
   {
      Console::WriteLine( "Ping canceled." );
      
      // Let the main thread resume. 
      // UserToken is the AutoResetEvent object that the main thread 
      // is waiting for.
      (dynamic_cast<AutoResetEvent^>(e->UserState))->Set();
   }

   
   // If an error occurred, display the exception to the user.
   if ( e->Error != nullptr )
   {
      Console::WriteLine( "Ping failed:" );
      Console::WriteLine( e->Error->ToString() );
      
      // Let the main thread resume. 
      (dynamic_cast<AutoResetEvent^>(e->UserState))->Set();
   }

   PingReply ^ reply = e->Reply;
   DisplayReply( reply );
   
   // Let the main thread resume.
   (dynamic_cast<AutoResetEvent^>(e->UserState))->Set();
}


void DisplayReply( PingReply ^ reply )
{
   if ( reply == nullptr )
      return;

   Console::WriteLine( "ping status: {0}", reply->Status );
   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 );
   }
}

using System;
using System.Text;
using System.Net;
using System.Net.NetworkInformation;
using System.ComponentModel;
using System.Threading;

namespace Examples.System.Net.NetworkInformation.PingTest
{
    public class PingExample
    {
        public static void Main (string[] args)
        {
            if (args.Length == 0)
                throw new ArgumentException ("Ping needs a host or IP Address.");

            string who = args[0];
            AutoResetEvent waiter = new AutoResetEvent (false);

            Ping pingSender = new Ping ();

            // When the PingCompleted event is raised,
            // the PingCompletedCallback method is called.
            pingSender.PingCompleted += new PingCompletedEventHandler (PingCompletedCallback);

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

            // Wait 12 seconds for a reply.
            int timeout = 12000;

            // 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);

            Console.WriteLine ("Time to live: {0}", options.Ttl);
            Console.WriteLine ("Don't fragment: {0}", options.DontFragment);

            // Send the ping asynchronously.
            // Use the waiter as the user token.
            // When the callback completes, it can wake up this thread.
            pingSender.SendAsync(who, timeout, buffer, options, waiter);

            // Prevent this example application from ending.
            // A real application should do something useful
            // when possible.
            waiter.WaitOne ();
            Console.WriteLine ("Ping example completed.");
        }

        private static void PingCompletedCallback (object sender, PingCompletedEventArgs e)
        {
            // If the operation was canceled, display a message to the user.
            if (e.Cancelled)
            {
                Console.WriteLine ("Ping canceled.");

                // Let the main thread resume. 
                // UserToken is the AutoResetEvent object that the main thread 
                // is waiting for.
                ((AutoResetEvent)e.UserState).Set ();
            }

            // If an error occurred, display the exception to the user.
            if (e.Error != null)
            {
                Console.WriteLine ("Ping failed:");
                Console.WriteLine (e.Error.ToString ());

                // Let the main thread resume. 
                ((AutoResetEvent)e.UserState).Set();
            }

            PingReply reply = e.Reply;

            DisplayReply (reply);

            // Let the main thread resume.
            ((AutoResetEvent)e.UserState).Set();
        }

        public static void DisplayReply (PingReply reply)
        {
            if (reply == null)
                return;

            Console.WriteLine ("ping status: {0}", reply.Status);
            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);
            }
        }
    }
}

注釈

SendAsync メソッドは、エコーメッセージを非同期的に送信します。操作が完了 (正常に完了または失敗) すると、はアプリケーションに状態を返します。The SendAsync method sends the Echo message asynchronously and, when the operation completes (successfully or unsuccessfully), returns the status to your application. アプリケーションでブロックしない場合は、SendAsync メソッドを呼び出します。Call the SendAsync method when your application must not block. 各呼び出しは、スレッドプールから自動的に割り当てられる個別のスレッドで実行されます。Each call executes in a separate thread that is automatically allocated from the thread pool. 非同期操作が完了すると、PingCompleted イベントが発生します。When the asynchronous operation completes, it raises the PingCompleted event. アプリケーションでは、PingCompletedEventHandler デリゲートを使用して、SendAsync がイベントを発生させるときに呼び出されるメソッドを指定します。Applications use a PingCompletedEventHandler delegate to specify the method that is called when SendAsync raises the event. SendAsyncを呼び出す前に、イベントに PingCompletedEventHandler デリゲートを追加する必要があります。You must add a PingCompletedEventHandler delegate to the event before calling SendAsync. デリゲートのメソッドは、SendAsync 呼び出しの結果を記述する PingReply オブジェクトを含む PingCompletedEventArgs オブジェクトを受け取ります。The delegate's method receives a PingCompletedEventArgs object that contains a PingReply object that describes the result of the SendAsync call. PingCompletedEventArgs オブジェクトは、UserState プロパティを継承します。The PingCompletedEventArgs object inherits the UserState property. このプロパティは、SendAsync の呼び出しに渡される userToken オブジェクトを格納します。This property contains the userToken object passed into the SendAsync call.

応答を待機している間にアプリケーションがブロックする必要がある場合は、Send メソッドを使用します。これらのメソッドは同期的です。If your application should block while waiting for a reply, use the Send methods; these methods are synchronous.

timeout パラメーターで指定された時間内に ICMP エコー応答メッセージが受信されない場合、ICMP エコーは失敗し、Status プロパティは TimedOutに設定されます。If the ICMP echo reply message is not received within the time specified by the timeout parameter, the ICMP echo fails, and the Status property is set to TimedOut.

注意

timeoutに非常に小さい数を指定した場合、timeout ミリ秒が経過しても Ping 応答を受信できます。When specifying very small numbers for timeout, the Ping reply can be received even if timeout milliseconds have elapsed.

DontFragment プロパティが true で、合計パケットサイズがローカルコンピューターとリモートコンピューター間のルーティングノードのいずれかによって送信できる最大パケットサイズを超えている場合、ICMP エコー要求は失敗します。If the DontFragment property is true and the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers, the ICMP echo request fails. この場合、StatusPacketTooBigに設定されます。When this happens, the Status is set to PacketTooBig.

ICMP エコーメッセージを転送先に到達するまでの最大回数を指定するには、Ttl プロパティを使用します。Use the Ttl property to specify the maximum number of times the ICMP echo message can be forwarded before reaching its destination. 指定された回数の転送後にパケットが送信先に届かない場合、パケットは破棄され、ICMP エコー要求は失敗します。If the packet does not reach its destination after being forwarded the specified number of times, the packet is discarded and the ICMP echo request fails. この場合、StatusTtlExpiredに設定されます。When this happens, the Status is set to TtlExpired.

SendAsync(IPAddress, Int32, Byte[], PingOptions, Object)

指定された IPAddress を持つコンピューターに、指定されたデータ バッファーと共に ICMP (インターネット制御メッセージ プロトコル) エコー メッセージを非同期的に送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message with the specified data buffer to the computer that has the specified IPAddress, and receive a corresponding ICMP echo reply message from that computer. このオーバーロードを使用して、操作のタイムアウト値を指定し、ICMP エコー メッセージ パケットのフラグメンテーションと有効期間 (TTL: time-to-live) の値を制御できます。This overload allows you to specify a time-out value for the operation and control fragmentation and Time-to-Live values for the ICMP echo message packet.

public:
 void SendAsync(System::Net::IPAddress ^ address, int timeout, cli::array <System::Byte> ^ buffer, System::Net::NetworkInformation::PingOptions ^ options, System::Object ^ userToken);
public void SendAsync (System.Net.IPAddress address, int timeout, byte[] buffer, System.Net.NetworkInformation.PingOptions options, object userToken);
member this.SendAsync : System.Net.IPAddress * int * byte[] * System.Net.NetworkInformation.PingOptions * obj -> unit
Public Sub SendAsync (address As IPAddress, timeout As Integer, buffer As Byte(), options As PingOptions, userToken As Object)

パラメーター

address
IPAddress

ICMP エコー メッセージの送信先コンピューターを識別する IPAddressAn IPAddress that identifies the computer that is the destination for the ICMP echo message.

timeout
Int32

エコー メッセージを送信してから ICMP エコー応答メッセージを待つ時間の最大値 (ミリ秒単位) を指定する Int32 値。An Int32 value that specifies the maximum number of milliseconds (after sending the echo message) to wait for the ICMP echo reply message.

buffer
Byte[]

ICMP エコー メッセージと共に送信されるデータが格納され、ICMP エコー応答メッセージで返される Byte 配列。A Byte array that contains data to be sent with the ICMP echo message and returned in the ICMP echo reply message. 配列には、65,500 バイトを超えるデータを格納することはできません。The array cannot contain more than 65,500 bytes.

options
PingOptions

ICMP エコー メッセージ パケットのフラグメンテーションと有効期間 (TTL: time-to-live) の値を制御するために使用される PingOptions オブジェクト。A PingOptions object used to control fragmentation and Time-to-Live values for the ICMP echo message packet.

userToken
Object

非同期操作が完了したときに呼び出されるメソッドに渡すオブジェクト。An object that is passed to the method invoked when the asynchronous operation completes.

例外

addressnull です。address is null.

または-or- buffernull です。buffer is null.

timeout に 0 より小さい値が指定されています。timeout is less than zero.

SendAsync の呼び出しを実行中です。A call to SendAsync is in progress.

ICMP メッセージの送信中または受信中に例外がスローされました。An exception was thrown while sending or receiving the ICMP messages. スローされた実際の例外については内部例外を参照してください。See the inner exception for the exact exception that was thrown.

address が有効な IP アドレスではありません。address is not a valid IP address.

このオブジェクトは破棄されました。This object has been disposed.

buffer のサイズが 65500 バイトを超えています。The size of buffer exceeds 65500 bytes.

次のコード例は、このメソッドを呼び出す方法を示しています。The following code example demonstrates how to call this method. コールバックメソッドの実装については、「SendAsync メソッドのオーバーロードの例」を参照してください。For an implementation of the callback method, see the SendAsync method overload example section.

次のコード例では、次の名前空間が必要です。The following code example requires the following namespaces:

#using <System.dll>

using namespace System;
using namespace System::Net;
using namespace System::Net::NetworkInformation;
using namespace System::Text;
using namespace System::Threading;

using System;
using System.Net;
using System.Net.NetworkInformation;
using System.Text;
using System.Threading;

次のコード例では、ICMP エコーメッセージを非同期的に送信します。The following code example sends an ICMP echo message asynchronously.

void AsyncComplexLocalPing()
{
   
   // Get an object that will block the main thread.
   AutoResetEvent^ waiter = gcnew AutoResetEvent( false );
   
   // Ping's the local machine.
   Ping ^ pingSender = gcnew Ping;
   
   // When the PingCompleted event is raised,
   // the PingCompletedCallback method is called.
   pingSender->PingCompleted += gcnew PingCompletedEventHandler( PingCompletedCallback );
   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 );
   
   // Send the ping asynchronously.
   // Use the waiter as the user token.
   // When the callback completes, it can wake up this thread.
   pingSender->SendAsync( address, timeout, buffer, options, waiter );
   
   // Prevent this example application from ending.
   // A real application should do something useful
   // when possible.
   waiter->WaitOne();
   Console::WriteLine( "Ping example completed." );
}


public static void AsyncComplexLocalPing ()
{
    // Get an object that will block the main thread.
    AutoResetEvent waiter = new AutoResetEvent (false);

    // Ping's the local machine.
    Ping pingSender = new Ping ();

    // When the PingCompleted event is raised,
    // the PingCompletedCallback method is called.
    pingSender.PingCompleted += new PingCompletedEventHandler (PingCompletedCallback);

    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);

    // Send the ping asynchronously.
    // Use the waiter as the user token.
    // When the callback completes, it can wake up this thread.
    pingSender.SendAsync (address, timeout, buffer, options, waiter);

    // Prevent this example application from ending.
    // A real application should do something useful
    // when possible.
    waiter.WaitOne ();
    Console.WriteLine ("Ping example completed.");
}

注釈

SendAsync メソッドは、エコーメッセージを非同期的に送信します。操作が完了 (正常に完了または失敗) すると、はアプリケーションに状態を返します。The SendAsync method sends the Echo message asynchronously and, when the operation completes (successfully or unsuccessfully), returns the status to your application. アプリケーションでブロックしない場合は、SendAsync メソッドを呼び出します。Call the SendAsync method when your application must not block. 各呼び出しは、スレッドプールから自動的に割り当てられる個別のスレッドで実行されます。Each call executes in a separate thread that is automatically allocated from the thread pool. 非同期操作が完了すると、PingCompleted イベントが発生します。When the asynchronous operation completes, it raises the PingCompleted event. アプリケーションでは、PingCompletedEventHandler デリゲートを使用して、SendAsync がイベントを発生させるときに呼び出されるメソッドを指定します。Applications use a PingCompletedEventHandler delegate to specify the method that is called when SendAsync raises the event. SendAsyncを呼び出す前に、イベントに PingCompletedEventHandler デリゲートを追加する必要があります。You must add a PingCompletedEventHandler delegate to the event before calling SendAsync. デリゲートのメソッドは、SendAsync 呼び出しの結果を記述する PingReply オブジェクトを含む PingCompletedEventArgs オブジェクトを受け取ります。The delegate's method receives a PingCompletedEventArgs object that contains a PingReply object that describes the result of the SendAsync call. PingCompletedEventArgs オブジェクトは、UserState プロパティを継承します。The PingCompletedEventArgs object inherits the UserState property. このプロパティは、SendAsync の呼び出しに渡される userToken オブジェクトを格納します。This property contains the userToken object passed into the SendAsync call.

応答の待機中にアプリケーションがブロックした場合は、Send メソッドを使用します。これらのメソッドは同期的です。If your application blocks while waiting for a reply, use the Send methods; these methods are synchronous.

timeout パラメーターで指定された時間内に ICMP エコー応答メッセージが受信されない場合、ICMP エコーは失敗し、Status プロパティは TimedOutに設定されます。If the ICMP echo reply message is not received within the time specified by the timeout parameter, the ICMP echo fails, and the Status property is set to TimedOut.

注意

timeoutに非常に小さい数を指定した場合、timeout ミリ秒が経過しても Ping 応答を受信できます。When specifying very small numbers for timeout, the Ping reply can be received even if timeout milliseconds have elapsed.

DontFragment プロパティが true で、合計パケットサイズがローカルコンピューターとリモートコンピューター間のルーティングノードのいずれかによって送信できる最大パケットサイズを超えている場合、ICMP エコー要求は失敗します。If the DontFragment property is true and the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers, the ICMP echo request fails. この場合、StatusPacketTooBigに設定されます。When this happens, the Status is set to PacketTooBig.

ICMP エコーメッセージを転送先に到達するまでの最大回数を指定するには、Ttl プロパティを使用します。Use the Ttl property to specify the maximum number of times the ICMP echo message can be forwarded before reaching its destination. 指定された回数の転送後にパケットが送信先に届かない場合、パケットは破棄され、ICMP エコー要求は失敗します。If the packet does not reach its destination after being forwarded the specified number of times, the packet is discarded and the ICMP echo request fails. この場合、StatusTtlExpiredに設定されます。When this happens, the Status is set to TtlExpired.

SendAsync(String, Int32, Byte[], Object)

指定されたコンピューターに、指定されたデータ バッファーと共に ICMP (インターネット制御メッセージ プロトコル) エコー メッセージを非同期的に送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message with the specified data buffer to the specified computer, and receive a corresponding ICMP echo reply message from that computer. このオーバーロードを使用して、操作のタイムアウト値を指定できます。This overload allows you to specify a time-out value for the operation.

public:
 void SendAsync(System::String ^ hostNameOrAddress, int timeout, cli::array <System::Byte> ^ buffer, System::Object ^ userToken);
public void SendAsync (string hostNameOrAddress, int timeout, byte[] buffer, object userToken);
member this.SendAsync : string * int * byte[] * obj -> unit
Public Sub SendAsync (hostNameOrAddress As String, timeout As Integer, buffer As Byte(), userToken As Object)

パラメーター

hostNameOrAddress
String

ICMP エコー メッセージの送信先コンピューターを識別する StringA String that identifies the computer that is the destination for the ICMP echo message. このパラメーターの値には、ホスト名または IP アドレスの文字列形式を指定できます。The value specified for this parameter can be a host name or a string representation of an IP address.

timeout
Int32

エコー メッセージを送信してから ICMP エコー応答メッセージを待つ時間の最大値 (ミリ秒単位) を指定する Int32 値。An Int32 value that specifies the maximum number of milliseconds (after sending the echo message) to wait for the ICMP echo reply message.

buffer
Byte[]

ICMP エコー メッセージと共に送信されるデータが格納され、ICMP エコー応答メッセージで返される Byte 配列。A Byte array that contains data to be sent with the ICMP echo message and returned in the ICMP echo reply message. 配列には、65,500 バイトを超えるデータを格納することはできません。The array cannot contain more than 65,500 bytes.

userToken
Object

非同期操作が完了したときに呼び出されるメソッドに渡すオブジェクト。An object that is passed to the method invoked when the asynchronous operation completes.

例外

hostNameOrAddressnull または空の文字列 ("") です。hostNameOrAddress is null or is an empty string ("").

または-or- buffernull です。buffer is null.

timeout に 0 より小さい値が指定されています。timeout is less than zero.

SendAsync の呼び出しを実行中です。A call to SendAsync is in progress.

ICMP メッセージの送信中または受信中に例外がスローされました。An exception was thrown while sending or receiving the ICMP messages. スローされた実際の例外については内部例外を参照してください。See the inner exception for the exact exception that was thrown.

hostNameOrAddress を有効な IP アドレスに解決できませんでした。hostNameOrAddress could not be resolved to a valid IP address.

このオブジェクトは破棄されました。This object has been disposed.

buffer のサイズが 65500 バイトを超えています。The size of buffer exceeds 65500 bytes.

次のコード例は、SendAsync のオーバーロードを呼び出す方法を示しています。 Ping クラスの概要を参照してください。The following code example demonstrates how to call a SendAsync overload, see the Ping class overview.

注釈

SendAsync メソッドは、エコーメッセージを非同期的に送信します。操作が完了 (正常に完了または失敗) すると、はアプリケーションに状態を返します。The SendAsync method sends the Echo message asynchronously and, when the operation completes (successfully or unsuccessfully), returns the status to your application. アプリケーションでブロックしない場合は、SendAsync メソッドを呼び出します。Call the SendAsync method when your application should not block. 各呼び出しは、スレッドプールから自動的に割り当てられる個別のスレッドで実行されます。Each call executes in a separate thread that is automatically allocated from the thread pool. 非同期操作が完了すると、PingCompleted イベントが発生します。When the asynchronous operation completes, it raises the PingCompleted event. アプリケーションでは、PingCompletedEventHandler デリゲートを使用して、SendAsync がイベントを発生させるときに呼び出されるメソッドを指定します。Applications use a PingCompletedEventHandler delegate to specify the method that is called when SendAsync raises the event. SendAsyncを呼び出す前に、イベントに PingCompletedEventHandler デリゲートを追加する必要があります。You must add a PingCompletedEventHandler delegate to the event before calling SendAsync. デリゲートのメソッドは、SendAsync 呼び出しの結果を記述する PingReply オブジェクトを含む PingCompletedEventArgs オブジェクトを受け取ります。The delegate's method receives a PingCompletedEventArgs object containing a PingReply object that describes the result of the SendAsync call. PingCompletedEventArgs オブジェクトは、UserState プロパティを継承します。The PingCompletedEventArgs object inherits the UserState property. このプロパティは、SendAsync の呼び出しに渡される userToken オブジェクトを格納します。This property contains the userToken object passed into the SendAsync call.

応答を待機している間にアプリケーションがブロックする必要がある場合は、Send メソッドを使用します。これらのメソッドは同期的です。If your application should block while waiting for a reply, use the Send methods; these methods are synchronous.

timeout パラメーターで指定された時間内に ICMP エコー応答メッセージが受信されない場合、ICMP エコーは失敗し、Status プロパティは TimedOutに設定されます。If the ICMP echo reply message is not received within the time specified by the timeout parameter, the ICMP echo fails, and the Status property is set to TimedOut.

注意

timeoutに非常に小さい数を指定した場合、timeout ミリ秒が経過しても Ping 応答を受信できます。When specifying very small numbers for timeout, the Ping reply can be received even if timeout milliseconds have elapsed.

このオーバーロードは、パケットの断片化およびパケット転送に既定の設定を使用します。This overload uses default settings for packet fragmentation and packet forwarding. ICMP エコーメッセージを含むパケットは、合計パケットサイズがローカルコンピューターとリモートコンピューター間のルーティングノードのいずれかによって送信される最大パケットサイズを超えた場合に、転送中に断片化することがあります。The packet that contains the ICMP echo message can be fragmented in transit if the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers. 断片化を防ぐには、options パラメーターを受け取る SendAsync メソッドの1つを使用し、DontFragment プロパティを trueに設定します。To prevent fragmentation, use one of the SendAsync methods that takes an options parameter, and set the DontFragment property to true. DontFragmenttrue、合計パケットサイズが、ローカルコンピューターとリモートコンピューターのいずれかのルーティングノードが送信できる最大パケットサイズを超えた場合、ICMP エコー要求は失敗します。When DontFragment is true and the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers, the ICMP echo request fails. この場合、StatusPacketTooBigに設定されます。When this happens, the Status is set to PacketTooBig. パケットフラグメント (フラグメント化されている場合) は、破棄される前に、ルーティングノードによって128回転送できます。The packet or packet fragments (if fragmented) can be forwarded by routing nodes 128 times before being discarded. この設定を変更するには、options パラメーターを受け取る SendAsync オーバーロードを使用し、Ttl プロパティを目的の値に設定します。To change this setting, use a SendAsync overload that takes an options parameter, and set the Ttl property to the desired value. 指定された回数の転送後にパケットが送信先に届かない場合、パケットは破棄され、ICMP エコー要求は失敗します。If the packet does not reach its destination after being forwarded the specified number of times, the packet is discarded and the ICMP echo request fails. この場合、StatusTtlExpiredに設定されます。When this happens, the Status is set to TtlExpired.

SendAsync(IPAddress, Int32, Byte[], Object)

指定された IPAddress を持つコンピューターに、指定されたデータ バッファーと共に ICMP (インターネット制御メッセージ プロトコル) エコー メッセージを非同期的に送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message with the specified data buffer to the computer that has the specified IPAddress, and receive a corresponding ICMP echo reply message from that computer. このオーバーロードを使用して、操作のタイムアウト値を指定できます。This overload allows you to specify a time-out value for the operation.

public:
 void SendAsync(System::Net::IPAddress ^ address, int timeout, cli::array <System::Byte> ^ buffer, System::Object ^ userToken);
public void SendAsync (System.Net.IPAddress address, int timeout, byte[] buffer, object userToken);
member this.SendAsync : System.Net.IPAddress * int * byte[] * obj -> unit
Public Sub SendAsync (address As IPAddress, timeout As Integer, buffer As Byte(), userToken As Object)

パラメーター

address
IPAddress

ICMP エコー メッセージの送信先コンピューターを識別する IPAddressAn IPAddress that identifies the computer that is the destination for the ICMP echo message.

timeout
Int32

エコー メッセージを送信してから ICMP エコー応答メッセージを待つ時間の最大値 (ミリ秒単位) を指定する Int32 値。An Int32 value that specifies the maximum number of milliseconds (after sending the echo message) to wait for the ICMP echo reply message.

buffer
Byte[]

ICMP エコー メッセージと共に送信されるデータが格納され、ICMP エコー応答メッセージで返される Byte 配列。A Byte array that contains data to be sent with the ICMP echo message and returned in the ICMP echo reply message. 配列には、65,500 バイトを超えるデータを格納することはできません。The array cannot contain more than 65,500 bytes.

userToken
Object

非同期操作が完了したときに呼び出されるメソッドに渡すオブジェクト。An object that is passed to the method invoked when the asynchronous operation completes.

例外

addressnull です。address is null.

または-or- buffernull です。buffer is null.

timeout に 0 より小さい値が指定されています。timeout is less than zero.

SendAsync の呼び出しを実行中です。A call to SendAsync is in progress.

ICMP メッセージの送信中または受信中に例外がスローされました。An exception was thrown while sending or receiving the ICMP messages. スローされた実際の例外については内部例外を参照してください。See the inner exception for the exact exception that was thrown.

address が有効な IP アドレスではありません。address is not a valid IP address.

このオブジェクトは破棄されました。This object has been disposed.

buffer のサイズが 65500 バイトを超えています。The size of buffer exceeds 65500 bytes.

SendAsync のオーバーロードの呼び出しを示すコード例については、「Ping クラスの概要」を参照してください。For a code example that demonstrates calling a SendAsync overload, see the Ping class overview.

注釈

このメソッドは、エコーメッセージを非同期的に送信します。操作が完了 (正常に完了または失敗) すると、アプリケーションに状態が返されます。This method sends the echo message asynchronously and, when the operation completes (successfully or unsuccessfully), returns the status to your application. アプリケーションでブロックしない場合は、SendAsync メソッドを呼び出します。Call the SendAsync method when your application should not block. 各呼び出しは、スレッドプールから自動的に割り当てられる個別のスレッドで実行されます。Each call executes in a separate thread that is automatically allocated from the thread pool. 非同期操作が完了すると、PingCompleted イベントが発生します。When the asynchronous operation completes, it raises the PingCompleted event. SendAsync がイベントを発生させるときに呼び出されるメソッドを指定するには、SendAsyncを呼び出す前に、イベントに PingCompletedEventHandler デリゲートを追加する必要があります。To specify the method that is called when SendAsync raises the event, you must add a PingCompletedEventHandler delegate to the event before calling SendAsync. デリゲートのメソッドは、SendAsync 呼び出しの結果を記述する PingReply オブジェクトを含む PingCompletedEventArgs オブジェクトを受け取ります。The delegate's method receives a PingCompletedEventArgs object that contains a PingReply object that describes the result of the SendAsync call. PingCompletedEventArgs オブジェクトは、UserState プロパティを継承します。The PingCompletedEventArgs object inherits the UserState property. このプロパティは、SendAsync の呼び出しに渡される userToken オブジェクトを格納します。This property contains the userToken object passed into the SendAsync call.

注意

応答の待機中にアプリケーションがブロックした場合は、Send メソッドを使用します。これらのメソッドは同期的です。If your application blocks while waiting for a reply, use the Send methods; these methods are synchronous.

timeout パラメーターで指定された時間内に ICMP エコー応答メッセージが受信されない場合、ICMP エコーは失敗し、Status プロパティは TimedOutに設定されます。If the ICMP echo reply message is not received within the time specified by the timeout parameter, the ICMP echo fails, and the Status property is set to TimedOut.

注意

timeoutに非常に小さい数を指定した場合、timeout ミリ秒が経過しても Ping 応答を受信できます。When specifying very small numbers for timeout, the Ping reply can be received even if timeout milliseconds have elapsed.

このオーバーロードは、パケットの断片化およびパケット転送に既定の設定を使用します。This overload uses default settings for packet fragmentation and packet forwarding. ICMP エコーメッセージを含むパケットは、合計パケットサイズがローカルコンピューターとリモートコンピューター間のルーティングノードのいずれかによって送信される最大パケットサイズを超えた場合に、転送中に断片化することがあります。The packet that contains the ICMP echo message can be fragmented in transit if the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers. 断片化を防ぐには、options パラメーターを受け取る SendAsync メソッドの1つを使用し、DontFragment プロパティを trueに設定します。To prevent fragmentation, use one of the SendAsync methods that takes an options parameter, and set the DontFragment property to true. DontFragmenttrue、合計パケットサイズが、ローカルコンピューターとリモートコンピューターのいずれかのルーティングノードが送信できる最大パケットサイズを超えた場合、ICMP エコー要求は失敗します。When DontFragment is true and the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers, the ICMP echo request fails. この場合、StatusPacketTooBigに設定されます。When this happens, the Status is set to PacketTooBig. パケットフラグメント (フラグメント化されている場合) は、破棄される前に、ルーティングノードによって128回転送できます。The packet or packet fragments (if fragmented) can be forwarded by routing nodes 128 times before being discarded. この設定を変更するには、options パラメーターを受け取る SendAsync オーバーロードを使用し、Ttl プロパティを目的の値に設定します。To change this setting, use a SendAsync overload that takes an options parameter, and set the Ttl property to the desired value. 指定された回数の転送後にパケットが送信先に届かない場合、パケットは破棄され、ICMP エコー要求は失敗します。If the packet does not reach its destination after being forwarded the specified number of times, the packet is discarded and the ICMP echo request fails. この場合、StatusTtlExpiredに設定されます。When this happens, the Status is set to TtlExpired.

SendAsync(IPAddress, Int32, Object)

指定された IPAddress を持つコンピューターに、非同期的に ICMP (インターネット制御メッセージ プロトコル) エコー メッセージを送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message to the computer that has the specified IPAddress, and receive a corresponding ICMP echo reply message from that computer. このオーバーロードを使用して、操作のタイムアウト値を指定できます。This overload allows you to specify a time-out value for the operation.

public:
 void SendAsync(System::Net::IPAddress ^ address, int timeout, System::Object ^ userToken);
public void SendAsync (System.Net.IPAddress address, int timeout, object userToken);
member this.SendAsync : System.Net.IPAddress * int * obj -> unit
Public Sub SendAsync (address As IPAddress, timeout As Integer, userToken As Object)

パラメーター

address
IPAddress

ICMP エコー メッセージの送信先コンピューターを識別する IPAddressAn IPAddress that identifies the computer that is the destination for the ICMP echo message.

timeout
Int32

エコー メッセージを送信してから ICMP エコー応答メッセージを待つ時間の最大値 (ミリ秒単位) を指定する Int32 値。An Int32 value that specifies the maximum number of milliseconds (after sending the echo message) to wait for the ICMP echo reply message.

userToken
Object

非同期操作が完了したときに呼び出されるメソッドに渡すオブジェクト。An object that is passed to the method invoked when the asynchronous operation completes.

例外

addressnull です。address is null.

timeout に 0 より小さい値が指定されています。timeout is less than zero.

SendAsync(IPAddress, Int32, Byte[], Object) メソッドの呼び出しを実行中です。A call to SendAsync(IPAddress, Int32, Byte[], Object) method is in progress.

ICMP メッセージの送信中または受信中に例外がスローされました。An exception was thrown while sending or receiving the ICMP messages. スローされた実際の例外については内部例外を参照してください。See the inner exception for the exact exception that was thrown.

address が有効な IP アドレスではありません。address is not a valid IP address.

このオブジェクトは破棄されました。This object has been disposed.

SendAsync のオーバーロードの呼び出しを示すコード例については、「Ping クラスの概要」を参照してください。For a code example that demonstrates calling a SendAsync overload, see the Ping class overview.

注釈

SendAsync メソッドは、エコーメッセージを非同期的に送信します。操作が完了 (正常に完了または失敗) すると、はアプリケーションに状態を返します。The SendAsync method sends the Echo message asynchronously and, when the operation completes (successfully or unsuccessfully), returns the status to your application. アプリケーションでブロックしない場合は、SendAsync メソッドを呼び出します。Call the SendAsync method when your application should not block. 各呼び出しは、スレッドプールから自動的に割り当てられる個別のスレッドで実行されます。Each call executes in a separate thread that is automatically allocated from the thread pool. 非同期操作が完了すると、PingCompleted イベントが発生します。When the asynchronous operation completes, it raises the PingCompleted event. アプリケーションでは、PingCompletedEventHandler デリゲートを使用して、SendAsync がイベントを発生させるときに呼び出されるメソッドを指定します。Applications use a PingCompletedEventHandler delegate to specify the method that is called when SendAsync raises the event. SendAsyncを呼び出す前に、イベントに PingCompletedEventHandler デリゲートを追加する必要があります。You must add a PingCompletedEventHandler delegate to the event before calling SendAsync. デリゲートのメソッドは、SendAsync 呼び出しの結果を記述する PingReply オブジェクトを含む PingCompletedEventArgs オブジェクトを受け取ります。The delegate's method receives a PingCompletedEventArgs object that contains a PingReply object that describes the result of the SendAsync call. PingCompletedEventArgs オブジェクトは、UserState プロパティを継承します。The PingCompletedEventArgs object inherits the UserState property. このプロパティは、SendAsync の呼び出しに渡される userToken オブジェクトを格納します。This property contains the userToken object passed into the SendAsync call.

応答を待機している間にアプリケーションがブロックする必要がある場合は、Send メソッドを使用します。これらのメソッドは同期的です。If your application should block while waiting for a reply, use the Send methods; these methods are synchronous.

timeout パラメーターで指定された時間内に ICMP エコー応答メッセージが受信されない場合、ICMP エコーは失敗し、Status プロパティは TimedOutに設定されます。If the ICMP echo reply message is not received within the time specified by the timeout parameter, the ICMP echo fails, and the Status property is set to TimedOut.

注意

timeoutに非常に小さい数を指定した場合、timeout ミリ秒が経過しても Ping 応答を受信できます。When specifying very small numbers for timeout, the Ping reply can be received even if timeout milliseconds have elapsed.

このオーバーロードは、パケットの断片化およびパケット転送に既定の設定を使用します。This overload uses default settings for packet fragmentation and packet forwarding. ICMP エコーメッセージを含むパケットは、合計パケットサイズがローカルコンピューターとリモートコンピューター間のルーティングノードのいずれかによって送信される最大パケットサイズを超えた場合に、転送中に断片化することがあります。The packet that contains the ICMP echo message can be fragmented in transit if the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers. 断片化を防ぐには、options パラメーターを受け取る SendAsync メソッドの1つを使用し、DontFragment プロパティを trueに設定します。To prevent fragmentation, use one of the SendAsync methods that takes an options parameter, and set the DontFragment property to true. DontFragmenttrue、合計パケットサイズが、ローカルコンピューターとリモートコンピューターのいずれかのルーティングノードが送信できる最大パケットサイズを超えた場合、ICMP エコー要求は失敗します。When DontFragment is true and the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers, the ICMP echo request fails. この場合、StatusPacketTooBigに設定されます。When this happens, the Status is set to PacketTooBig. パケットフラグメント (フラグメント化されている場合) は、破棄される前に、ルーティングノードによって128回転送できます。The packet or packet fragments (if fragmented) can be forwarded by routing nodes 128 times before being discarded. この設定を変更するには、options パラメーターを受け取る SendAsync オーバーロードを使用し、Ttl プロパティを目的の値に設定します。To change this setting, use a SendAsync overload that takes an options parameter, and set the Ttl property to the desired value. 指定された回数の転送後にパケットが送信先に届かない場合、パケットは破棄され、ICMP エコー要求は失敗します。If the packet does not reach its destination after being forwarded the specified number of times, the packet is discarded and the ICMP echo request fails. この場合、StatusTtlExpiredに設定されます。When this happens, the Status is set to TtlExpired.

SendAsync(String, Object)

指定されたコンピューターに、非同期的に ICMP (インターネット制御メッセージ プロトコル) エコー メッセージを送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message to the specified computer, and receive a corresponding ICMP echo reply message from that computer.

public:
 void SendAsync(System::String ^ hostNameOrAddress, System::Object ^ userToken);
public void SendAsync (string hostNameOrAddress, object userToken);
member this.SendAsync : string * obj -> unit
Public Sub SendAsync (hostNameOrAddress As String, userToken As Object)

パラメーター

hostNameOrAddress
String

ICMP エコー メッセージの送信先コンピューターを識別する StringA String that identifies the computer that is the destination for the ICMP echo message. このパラメーターの値には、ホスト名または IP アドレスの文字列形式を指定できます。The value specified for this parameter can be a host name or a string representation of an IP address.

userToken
Object

非同期操作が完了したときに呼び出されるメソッドに渡すオブジェクト。An object that is passed to the method invoked when the asynchronous operation completes.

例外

hostNameOrAddressnull または空の文字列 ("") です。hostNameOrAddress is null or is an empty string ("").

SendAsync(String, Object) メソッドの呼び出しを実行中です。A call to SendAsync(String, Object) method is in progress.

ICMP メッセージの送信中または受信中に例外がスローされました。An exception was thrown while sending or receiving the ICMP messages. スローされた実際の例外については内部例外を参照してください。See the inner exception for the exact exception that was thrown.

hostNameOrAddress を有効な IP アドレスに解決できませんでした。hostNameOrAddress could not be resolved to a valid IP address.

このオブジェクトは破棄されました。This object has been disposed.

SendAsync メソッドの呼び出しを示すコード例については、「Ping クラスの概要」を参照してください。For a code example that demonstrates calling the SendAsync method, see the Ping class overview.

注釈

SendAsync メソッドは、エコーメッセージを非同期的に送信します。操作が完了 (正常に完了または失敗) すると、はアプリケーションに状態を返します。The SendAsync method sends the echo message asynchronously and, when the operation completes (successfully or unsuccessfully), returns the status to your application. アプリケーションでブロックしない場合は、SendAsync メソッドを呼び出します。Call the SendAsync method when your application should not block. このメソッドの各呼び出しは、スレッドプールから自動的に割り当てられる個別のスレッドで実行されます。Each call to this method executes in a separate thread that is automatically allocated from the thread pool. 非同期操作が完了すると、PingCompleted イベントが発生します。When the asynchronous operation completes, it raises the PingCompleted event. SendAsync がイベントを発生させるときに呼び出されるメソッドを指定するには、SendAsyncを呼び出す前に、イベントに PingCompletedEventHandler デリゲートを追加する必要があります。To specify the method that is called when SendAsync raises the event, you must add a PingCompletedEventHandler delegate to the event before calling SendAsync. デリゲートのメソッドは、SendAsync 呼び出しの結果を記述する PingReply オブジェクトを含む PingCompletedEventArgs オブジェクトを受け取ります。The delegate's method receives a PingCompletedEventArgs object that contains a PingReply object that describes the result of the SendAsync call. PingCompletedEventArgs オブジェクトは、UserState プロパティを継承します。The PingCompletedEventArgs object inherits the UserState property. このプロパティは、SendAsync の呼び出しに渡される userToken オブジェクトを格納します。This property contains the userToken object passed into the SendAsync call.

注意

応答を待機している間にアプリケーションがブロックする必要がある場合は、Send メソッドを使用します。これらのメソッドは同期的です。If your application should block while waiting for a reply, use the Send methods; these methods are synchronous.

このメソッドは、ICMP エコーメッセージを使用して 32 Byte データバッファーを送信します。This method sends a 32 Byte data buffer with the ICMP echo message. メソッドは、ICMP エコー応答メッセージを5秒間待機します。The method waits five seconds for an ICMP echo reply message. この時間内に応答を受信しない場合、メソッドはを返し、Status プロパティは TimedOutに設定されます。If it does not receive a reply in that time the method returns and the Status property is set to TimedOut.

このオーバーロードは、パケットの断片化およびパケット転送に既定の設定を使用します。This overload uses default settings for packet fragmentation and packet forwarding. ICMP エコーメッセージを含むパケットは、合計パケットサイズがローカルコンピューターとリモートコンピューター間のルーティングノードのいずれかによって送信される最大パケットサイズを超えた場合に、転送中に断片化することがあります。The packet that contains the ICMP echo message can be fragmented in transit if the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers. 断片化を防ぐには、options パラメーターを受け取る SendAsync メソッドの1つを使用し、DontFragment プロパティを trueに設定します。To prevent fragmentation, use one of the SendAsync methods that takes an options parameter, and set the DontFragment property to true. DontFragmenttrue、合計パケットサイズが、ローカルコンピューターとリモートコンピューターのいずれかのルーティングノードが送信できる最大パケットサイズを超えた場合、ICMP エコー要求は失敗します。When DontFragment is true and the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers, the ICMP echo request fails. この場合、StatusPacketTooBigに設定されます。When this happens, the Status is set to PacketTooBig.

パケットフラグメントまたはパケットフラグメントは、128回のルーティングノードによって破棄されるまで転送できます。The packet or packet fragments can be forwarded by routing nodes 128 times before being discarded. この設定を変更するには、options パラメーターを受け取る SendAsync オーバーロードを使用し、Ttl プロパティを目的の値に設定します。To change this setting, use a SendAsync overload that takes an options parameter, and set the Ttl property to the desired value. 指定された回数の転送後にパケットが送信先に届かない場合、パケットは破棄され、ICMP エコー要求は失敗します。If the packet does not reach its destination after being forwarded the specified number of times, the packet is discarded and the ICMP echo request fails. この場合、StatusTtlExpiredに設定されます。When this happens, the Status is set to TtlExpired.

SendAsync(IPAddress, Object)

指定された IPAddress を持つコンピューターに、非同期的に ICMP (インターネット制御メッセージ プロトコル) エコー メッセージを送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message to the computer that has the specified IPAddress, and receive a corresponding ICMP echo reply message from that computer.

public:
 void SendAsync(System::Net::IPAddress ^ address, System::Object ^ userToken);
public void SendAsync (System.Net.IPAddress address, object userToken);
member this.SendAsync : System.Net.IPAddress * obj -> unit
Public Sub SendAsync (address As IPAddress, userToken As Object)

パラメーター

address
IPAddress

ICMP エコー メッセージの送信先コンピューターを識別する IPAddressAn IPAddress that identifies the computer that is the destination for the ICMP echo message.

userToken
Object

非同期操作が完了したときに呼び出されるメソッドに渡すオブジェクト。An object that is passed to the method invoked when the asynchronous operation completes.

例外

addressnull です。address is null.

SendAsync メソッドの呼び出しを実行中です。A call to the SendAsync method is in progress.

ICMP メッセージの送信中または受信中に例外がスローされました。An exception was thrown while sending or receiving the ICMP messages. スローされた実際の例外については内部例外を参照してください。See the inner exception for the exact exception that was thrown.

address が有効な IP アドレスではありません。address is not a valid IP address.

このオブジェクトは破棄されました。This object has been disposed.

SendAsync メソッドの呼び出しを示すコード例については、「Ping クラスの概要」を参照してください。For a code example that demonstrates calling a SendAsync method, see the Ping class overview.

注釈

SendAsync メソッドは、エコーメッセージを非同期的に送信します。操作が完了 (正常に完了または失敗) すると、はアプリケーションに状態を返します。The SendAsync method sends the echo message asynchronously and, when the operation completes (successfully or unsuccessfully), returns the status to your application. アプリケーションでブロックしない場合は、SendAsync メソッドを呼び出します。Call the SendAsync method when your application should not block. このメソッドの各呼び出しは、スレッドプールから自動的に割り当てられる個別のスレッドで実行されます。Each call to this method executes in a separate thread that is automatically allocated from the thread pool. 非同期操作が完了すると、PingCompleted イベントが発生します。When the asynchronous operation completes, it raises the PingCompleted event. SendAsync がイベントを発生させるときに呼び出されるメソッドを指定するには、SendAsyncを呼び出す前に、イベントに PingCompletedEventHandler デリゲートを追加する必要があります。To specify the method that is called when SendAsync raises the event, you must add a PingCompletedEventHandler delegate to the event before calling SendAsync. デリゲートのメソッドは、SendAsync 呼び出しの結果を記述する PingReply オブジェクトを含む PingCompletedEventArgs オブジェクトを受け取ります。The delegate's method receives a PingCompletedEventArgs object that contains a PingReply object that describes the result of the SendAsync call. PingCompletedEventArgs オブジェクトは、UserState プロパティを継承します。The PingCompletedEventArgs object inherits the UserState property. このプロパティは、SendAsync の呼び出しに渡される userToken オブジェクトを格納します。This property contains the userToken object passed into the SendAsync call.

注意

応答の待機中にアプリケーションがブロックする必要がある場合は、Send メソッドのいずれかを使用します。これらのメソッドは同期的です。If your application should block while waiting for a reply, use one of the Send methods; these methods are synchronous.

このメソッドは、ICMP エコーメッセージを使用して 32 Byte データバッファーを送信します。This method sends a 32 Byte data buffer with the ICMP echo message. メソッドは、ICMP エコー応答メッセージを5秒間待機します。The method waits five seconds for an ICMP echo reply message. この時間内に応答が受信されない場合、メソッドはを返し、Status プロパティは TimedOutに設定されます。If it does not receive a reply in that time, the method returns and the Status property is set to TimedOut.

このオーバーロードは、パケットの断片化およびパケット転送に既定の設定を使用します。This overload uses default settings for packet fragmentation and packet forwarding. ICMP エコーメッセージを含むパケットは、合計パケットサイズがローカルコンピューターとリモートコンピューター間のルーティングノードのいずれかによって送信される最大パケットサイズを超えた場合に、転送中に断片化することがあります。The packet that contains the ICMP echo message can be fragmented in transit if the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers. 断片化を防ぐには、options パラメーターを受け取る SendAsync メソッドの1つを使用し、DontFragment プロパティを trueに設定します。To prevent fragmentation, use one of the SendAsync methods that takes an options parameter, and set the DontFragment property to true. DontFragmenttrue、合計パケットサイズが、ローカルコンピューターとリモートコンピューターのいずれかのルーティングノードが送信できる最大パケットサイズを超えた場合、ICMP エコー要求は失敗します。When DontFragment is true and the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers, the ICMP echo request fails. この場合、StatusPacketTooBigに設定されます。When this happens, the Status is set to PacketTooBig.

パケットフラグメントまたはパケットフラグメントは、128回のルーティングノードによって破棄されるまで転送できます。The packet or packet fragments can be forwarded by routing nodes 128 times before being discarded. この設定を変更するには、options パラメーターを受け取る SendAsync オーバーロードを使用し、Ttl プロパティを目的の値に設定します。To change this setting, use a SendAsync overload that takes an options parameter, and set the Ttl property to the desired value. 指定された回数の転送後にパケットが送信先に届かない場合、パケットは破棄され、ICMP エコー要求は失敗します。If the packet does not reach its destination after being forwarded the specified number of times, the packet is discarded and the ICMP echo request fails. この場合、StatusTtlExpiredに設定されます。When this happens, the Status is set to TtlExpired.

SendAsync(String, Int32, Object)

指定されたコンピューターに、非同期的に ICMP (インターネット制御メッセージ プロトコル) エコー メッセージを送信し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message to the specified computer, and receive a corresponding ICMP echo reply message from that computer. このオーバーロードを使用して、操作のタイムアウト値を指定できます。This overload allows you to specify a time-out value for the operation.

public:
 void SendAsync(System::String ^ hostNameOrAddress, int timeout, System::Object ^ userToken);
public void SendAsync (string hostNameOrAddress, int timeout, object userToken);
member this.SendAsync : string * int * obj -> unit
Public Sub SendAsync (hostNameOrAddress As String, timeout As Integer, userToken As Object)

パラメーター

hostNameOrAddress
String

ICMP エコー メッセージの送信先コンピューターを識別する StringA String that identifies the computer that is the destination for the ICMP echo message. このパラメーターの値には、ホスト名または IP アドレスの文字列形式を指定できます。The value specified for this parameter can be a host name or a string representation of an IP address.

timeout
Int32

エコー メッセージを送信してから ICMP エコー応答メッセージを待つ時間の最大値 (ミリ秒単位) を指定する Int32 値。An Int32 value that specifies the maximum number of milliseconds (after sending the echo message) to wait for the ICMP echo reply message.

userToken
Object

非同期操作が完了したときに呼び出されるメソッドに渡すオブジェクト。An object that is passed to the method invoked when the asynchronous operation completes.

例外

hostNameOrAddressnull または空の文字列 ("") です。hostNameOrAddress is null or is an empty string ("").

timeout に 0 より小さい値が指定されています。timeout is less than zero.

SendAsync の呼び出しを実行中です。A call to SendAsync is in progress.

ICMP メッセージの送信中または受信中に例外がスローされました。An exception was thrown while sending or receiving the ICMP messages. スローされた実際の例外については内部例外を参照してください。See the inner exception for the exact exception that was thrown.

hostNameOrAddress を有効な IP アドレスに解決できませんでした。hostNameOrAddress could not be resolved to a valid IP address.

このオブジェクトは破棄されました。This object has been disposed.

SendAsync メソッドの呼び出しを示すコード例については、「Ping クラスの概要」を参照してください。For a code example that demonstrates calling the SendAsync method, see the Ping class overview.

注釈

SendAsync メソッドは、エコーメッセージを非同期的に送信します。操作が完了 (正常に完了または失敗) すると、はアプリケーションに状態を返します。The SendAsync method sends the Echo message asynchronously and, when the operation completes (successfully or unsuccessfully), returns the status to your application. アプリケーションでブロックしない場合は、SendAsync メソッドを呼び出します。Call the SendAsync method when your application should not block. 各呼び出しは、スレッドプールから自動的に割り当てられる個別のスレッドで実行されます。Each call executes in a separate thread that is automatically allocated from the thread pool. 非同期操作が完了すると、PingCompleted イベントが発生します。When the asynchronous operation completes, it raises the PingCompleted event. アプリケーションでは、PingCompletedEventHandler デリゲートを使用して、SendAsync がイベントを発生させるときに呼び出されるメソッドを指定します。Applications use a PingCompletedEventHandler delegate to specify the method that is called when SendAsync raises the event. SendAsyncを呼び出す前に、イベントに PingCompletedEventHandler デリゲートを追加する必要があります。You must add a PingCompletedEventHandler delegate to the event before calling SendAsync. デリゲートのメソッドは、SendAsync 呼び出しの結果を記述する PingReply オブジェクトを含む PingCompletedEventArgs オブジェクトを受け取ります。The delegate's method receives a PingCompletedEventArgs object that contains a PingReply object that describes the result of the SendAsync call. PingCompletedEventArgs オブジェクトは、UserState プロパティを継承します。The PingCompletedEventArgs object inherits the UserState property. このプロパティは、SendAsync の呼び出しに渡される userToken オブジェクトを格納します。This property contains the userToken object passed into the SendAsync call.

応答を待機している間にアプリケーションがブロックする必要がある場合は、Send メソッドを使用します。これらのメソッドは同期的です。If your application should block while waiting for a reply, use the Send methods; these methods are synchronous.

timeout パラメーターで指定された時間内に ICMP エコー応答メッセージが受信されない場合、ICMP エコーは失敗し、Status プロパティは TimedOutに設定されます。If the ICMP echo reply message is not received within the time specified by the timeout parameter, the ICMP echo fails, and the Status property is set to TimedOut.

注意

timeoutに非常に小さい数を指定した場合、timeout ミリ秒が経過しても Ping 応答を受信できます。When specifying very small numbers for timeout, the Ping reply can be received even if timeout milliseconds have elapsed.

このオーバーロードは、パケットの断片化およびパケット転送に既定の設定を使用します。This overload uses default settings for packet fragmentation and packet forwarding. ICMP エコーメッセージを含むパケットは、合計パケットサイズがローカルコンピューターとリモートコンピューター間のルーティングノードのいずれかによって送信される最大パケットサイズを超えた場合に、転送中に断片化することがあります。The packet that contains the ICMP echo message can be fragmented in transit if the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers. 断片化を防ぐには、options パラメーターを受け取る SendAsync メソッドの1つを使用し、DontFragment プロパティを trueに設定します。To prevent fragmentation, use one of the SendAsync methods that takes an options parameter, and set the DontFragment property to true. DontFragmenttrue、合計パケットサイズが、ローカルコンピューターとリモートコンピューターのいずれかのルーティングノードが送信できる最大パケットサイズを超えた場合、ICMP エコー要求は失敗します。When DontFragment is true and the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers, the ICMP echo request fails. この場合、StatusPacketTooBigに設定されます。When this happens, the Status is set to PacketTooBig. パケットフラグメント (フラグメント化されている場合) は、破棄される前に、ルーティングノードによって128回転送できます。The packet or packet fragments (if fragmented) can be forwarded by routing nodes 128 times before being discarded. この設定を変更するには、options パラメーターを受け取る SendAsync オーバーロードを使用し、Ttl プロパティを目的の値に設定します。To change this setting, use a SendAsync overload that takes an options parameter, and set the Ttl property to the desired value. 指定された回数の転送後にパケットが送信先に届かない場合、パケットは破棄され、ICMP エコー要求は失敗します。If the packet does not reach its destination after being forwarded the specified number of times, the packet is discarded and the ICMP echo request fails. この場合、StatusTtlExpiredに設定されます。When this happens, the Status is set to TtlExpired.

適用対象