Ping.SendAsync メソッド

定義

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

オーバーロード

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

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

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

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

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

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

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

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

SendAsync(IPAddress, Int32, Object)

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

SendAsync(String, Object)

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

SendAsync(IPAddress, Object)

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

SendAsync(String, Int32, Object)

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

注釈

これらのメソッドによって、アプリケーションのメイン スレッドがブロックされるわけではありません。 ICMP エコー応答メッセージの待機中にブロックする場合は、 メソッドを Send 使用します。

注意

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

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

ソース:
Ping.cs
ソース:
Ping.cs
ソース:
Ping.cs

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

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

timeout
Int32

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

buffer
Byte[]

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

options
PingOptions

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

userToken
Object

非同期操作が完了したときに呼び出されるメソッドに渡すオブジェクト。

例外

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

- または -

buffernull です。

timeout が 0 未満です。

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

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

hostNameOrAddress を有効な IP アドレスに解決できませんでした。

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

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

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

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

#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 エコー メッセージを非同期的に送信し、操作が完了すると (正常または失敗)、状態をアプリケーションに返します。 アプリケーションが SendAsync ブロックしてはならない場合は、 メソッドを呼び出します。 各呼び出しは、スレッド プールから自動的に割り当てられる個別のスレッドで実行されます。 非同期操作が完了すると、 イベントが発生します PingCompleted 。 アプリケーションでは、デリゲートを PingCompletedEventHandler 使用して、 イベントが発生したときに SendAsync 呼び出されるメソッドを指定します。 を呼び出すPingCompletedEventHandlerSendAsync前に、イベントにデリゲートを追加する必要があります。 デリゲートの メソッドは、 PingCompletedEventArgs 呼び出しの結果を記述する オブジェクトを PingReply 含む オブジェクトを SendAsync 受け取ります。 オブジェクトは PingCompletedEventArgs プロパティを UserState 継承します。 このプロパティには、呼び出しに userToken 渡されるオブジェクトが SendAsync 含まれます。

応答の待機中にアプリケーションがブロックする必要がある場合は、 メソッドを Send 使用します。これらのメソッドは同期的です。

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

注意

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

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

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

適用対象

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

ソース:
Ping.cs
ソース:
Ping.cs
ソース:
Ping.cs

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

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);
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 エコー メッセージの送信先コンピューターを識別する IPAddress

timeout
Int32

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

buffer
Byte[]

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

options
PingOptions

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

userToken
Object

非同期操作が完了したときに呼び出されるメソッドに渡すオブジェクト。

例外

address または buffernull です。

timeout が 0 未満です。

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

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

address が有効な IP アドレスではありません。

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

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

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

次のコード例では、このメソッドを呼び出す方法を示します。 コールバック メソッドの実装については、メソッド オーバーロードの例に関するセクションを SendAsync 参照してください。

次のコード例では、次の名前空間が必要です。

#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 エコー メッセージを非同期に送信します。

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 エコー メッセージを非同期的に送信し、操作が完了すると (正常または失敗)、状態をアプリケーションに返します。 アプリケーションが SendAsync ブロックしてはならない場合は、 メソッドを呼び出します。 各呼び出しは、スレッド プールから自動的に割り当てられる個別のスレッドで実行されます。 非同期操作が完了すると、 イベントが発生します PingCompleted 。 アプリケーションでは、デリゲートを PingCompletedEventHandler 使用して、 イベントが発生したときに SendAsync 呼び出されるメソッドを指定します。 を呼び出すPingCompletedEventHandlerSendAsync前に、イベントにデリゲートを追加する必要があります。 デリゲートの メソッドは、 PingCompletedEventArgs 呼び出しの結果を記述する オブジェクトを PingReply 含む オブジェクトを SendAsync 受け取ります。 オブジェクトは PingCompletedEventArgs プロパティを UserState 継承します。 このプロパティには、呼び出しに userToken 渡されるオブジェクトが SendAsync 含まれます。

応答の待機中にアプリケーションがブロックする場合は、 メソッドを Send 使用します。これらのメソッドは同期的です。

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

注意

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

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

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

適用対象

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

ソース:
Ping.cs
ソース:
Ping.cs
ソース:
Ping.cs

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

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

timeout
Int32

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

buffer
Byte[]

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

userToken
Object

非同期操作が完了したときに呼び出されるメソッドに渡すオブジェクト。

例外

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

- または -

buffernull です。

timeout が 0 未満です。

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

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

hostNameOrAddress を有効な IP アドレスに解決できませんでした。

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

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

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

次のコード例は、オーバーロードを呼び出す方法を SendAsync 示しています。クラスの概要を Ping 参照してください。

注釈

メソッドは SendAsync エコー メッセージを非同期的に送信し、操作が完了すると (正常または失敗)、アプリケーションに状態を返します。 アプリケーションが SendAsync ブロックしない場合は、 メソッドを呼び出します。 各呼び出しは、スレッド プールから自動的に割り当てられる個別のスレッドで実行されます。 非同期操作が完了すると、 イベントが PingCompleted 発生します。 アプリケーションでは、デリゲートを PingCompletedEventHandler 使用して、 イベントが発生したときに SendAsync 呼び出されるメソッドを指定します。 を呼び出すPingCompletedEventHandlerSendAsync前に、 イベントにデリゲートを追加する必要があります。 デリゲートの メソッドは、 PingCompletedEventArgs 呼び出しの結果を記述する オブジェクトを PingReply 含む オブジェクトを SendAsync 受け取ります。 オブジェクトは PingCompletedEventArgs プロパティを UserState 継承します。 このプロパティには、呼び出しに userToken 渡されるオブジェクトが SendAsync 含まれています。

応答の待機中にアプリケーションをブロックする必要がある場合は、 メソッドを Send 使用します。これらのメソッドは同期的です。

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

注意

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

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

適用対象

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

ソース:
Ping.cs
ソース:
Ping.cs
ソース:
Ping.cs

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

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);
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 エコー メッセージの送信先コンピューターを識別する IPAddress

timeout
Int32

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

buffer
Byte[]

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

userToken
Object

非同期操作が完了したときに呼び出されるメソッドに渡すオブジェクト。

例外

address または buffernull です。

timeout が 0 未満です。

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

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

address が有効な IP アドレスではありません。

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

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

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

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

注釈

このメソッドは、エコー メッセージを非同期的に送信し、操作が完了すると (正常または失敗)、アプリケーションに状態を返します。 アプリケーションが SendAsync ブロックしない場合は、 メソッドを呼び出します。 各呼び出しは、スレッド プールから自動的に割り当てられる個別のスレッドで実行されます。 非同期操作が完了すると、 イベントが PingCompleted 発生します。 イベントが発生したときにSendAsync呼び出されるメソッドを指定するには、 を呼び出すSendAsync前に、イベントにデリゲートを追加PingCompletedEventHandlerする必要があります。 デリゲートの メソッドは、 PingCompletedEventArgs 呼び出しの結果を記述する オブジェクトを PingReply 含む オブジェクトを SendAsync 受け取ります。 オブジェクトは PingCompletedEventArgs プロパティを UserState 継承します。 このプロパティには、呼び出しに userToken 渡されるオブジェクトが SendAsync 含まれています。

注意

応答の待機中にアプリケーションがブロックする場合は、 メソッドを Send 使用します。これらのメソッドは同期的です。

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

注意

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

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

適用対象

SendAsync(IPAddress, Int32, Object)

ソース:
Ping.cs
ソース:
Ping.cs
ソース:
Ping.cs

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

public:
 void SendAsync(System::Net::IPAddress ^ address, int timeout, System::Object ^ userToken);
public void SendAsync (System.Net.IPAddress address, int timeout, 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 エコー メッセージの送信先コンピューターを識別する IPAddress

timeout
Int32

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

userToken
Object

非同期操作が完了したときに呼び出されるメソッドに渡すオブジェクト。

例外

addressnullです。

timeout が 0 未満です。

SendAsync(IPAddress, Int32, Byte[], Object) メソッドの呼び出しを実行中です。

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

address が有効な IP アドレスではありません。

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

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

注釈

メソッドは SendAsync エコー メッセージを非同期的に送信し、操作が完了すると (正常または失敗)、状態をアプリケーションに返します。 アプリケーションが SendAsync ブロックしない場合は、 メソッドを呼び出します。 各呼び出しは、スレッド プールから自動的に割り当てられる個別のスレッドで実行されます。 非同期操作が完了すると、 イベントが発生します PingCompleted 。 アプリケーションでは、デリゲートを PingCompletedEventHandler 使用して、 イベントが発生したときに SendAsync 呼び出されるメソッドを指定します。 を呼び出すPingCompletedEventHandlerSendAsync前に、イベントにデリゲートを追加する必要があります。 デリゲートの メソッドは、 PingCompletedEventArgs 呼び出しの結果を記述する オブジェクトを PingReply 含む オブジェクトを SendAsync 受け取ります。 オブジェクトは PingCompletedEventArgs プロパティを UserState 継承します。 このプロパティには、呼び出しに userToken 渡されるオブジェクトが SendAsync 含まれます。

応答の待機中にアプリケーションがブロックする必要がある場合は、 メソッドを Send 使用します。これらのメソッドは同期的です。

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

注意

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

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

適用対象

SendAsync(String, Object)

ソース:
Ping.cs
ソース:
Ping.cs
ソース:
Ping.cs

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

public:
 void SendAsync(System::String ^ hostNameOrAddress, System::Object ^ userToken);
public void SendAsync (string hostNameOrAddress, 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 エコー メッセージの送信先コンピューターを識別する String。 このパラメーターの値には、ホスト名または IP アドレスの文字列形式を指定できます。

userToken
Object

非同期操作が完了したときに呼び出されるメソッドに渡すオブジェクト。

例外

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

SendAsync(String, Object) メソッドの呼び出しを実行中です。

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

hostNameOrAddress を有効な IP アドレスに解決できませんでした。

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

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

注釈

メソッドは SendAsync エコー メッセージを非同期的に送信し、操作が完了すると (正常または失敗)、状態をアプリケーションに返します。 アプリケーションが SendAsync ブロックしない場合は、 メソッドを呼び出します。 このメソッドの各呼び出しは、スレッド プールから自動的に割り当てられる個別のスレッドで実行されます。 非同期操作が完了すると、 イベントが発生します PingCompleted 。 イベントが発生したときにSendAsync呼び出されるメソッドを指定するには、 を呼び出すSendAsync前に、イベントにデリゲートを追加PingCompletedEventHandlerする必要があります。 デリゲートの メソッドは、 PingCompletedEventArgs 呼び出しの結果を記述する オブジェクトを PingReply 含む オブジェクトを SendAsync 受け取ります。 オブジェクトは PingCompletedEventArgs プロパティを UserState 継承します。 このプロパティには、呼び出しに userToken 渡されるオブジェクトが SendAsync 含まれます。

注意

応答の待機中にアプリケーションがブロックする必要がある場合は、 メソッドを Send 使用します。これらのメソッドは同期的です。

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

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

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

適用対象

SendAsync(IPAddress, Object)

ソース:
Ping.cs
ソース:
Ping.cs
ソース:
Ping.cs

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

public:
 void SendAsync(System::Net::IPAddress ^ address, System::Object ^ userToken);
public void SendAsync (System.Net.IPAddress address, 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 エコー メッセージの送信先コンピューターを識別する IPAddress

userToken
Object

非同期操作が完了したときに呼び出されるメソッドに渡すオブジェクト。

例外

addressnullです。

SendAsync メソッドの呼び出しを実行中です。

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

address が有効な IP アドレスではありません。

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

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

注釈

メソッドは SendAsync エコー メッセージを非同期的に送信し、操作が完了すると (正常または失敗)、状態をアプリケーションに返します。 アプリケーションが SendAsync ブロックしない場合は、 メソッドを呼び出します。 このメソッドの各呼び出しは、スレッド プールから自動的に割り当てられる個別のスレッドで実行されます。 非同期操作が完了すると、 イベントが発生します PingCompleted 。 イベントが発生したときにSendAsync呼び出されるメソッドを指定するには、 を呼び出すSendAsync前に、イベントにデリゲートを追加PingCompletedEventHandlerする必要があります。 デリゲートの メソッドは、 PingCompletedEventArgs 呼び出しの結果を記述する オブジェクトを PingReply 含む オブジェクトを SendAsync 受け取ります。 オブジェクトは PingCompletedEventArgs プロパティを UserState 継承します。 このプロパティには、呼び出しに userToken 渡されるオブジェクトが SendAsync 含まれます。

注意

応答の待機中にアプリケーションがブロックする必要がある場合は、いずれかのメソッドを Send 使用します。これらのメソッドは同期的です。

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

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

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

適用対象

SendAsync(String, Int32, Object)

ソース:
Ping.cs
ソース:
Ping.cs
ソース:
Ping.cs

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

public:
 void SendAsync(System::String ^ hostNameOrAddress, int timeout, System::Object ^ userToken);
public void SendAsync (string hostNameOrAddress, int timeout, 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 エコー メッセージの送信先コンピューターを識別する String。 このパラメーターの値には、ホスト名または IP アドレスの文字列形式を指定できます。

timeout
Int32

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

userToken
Object

非同期操作が完了したときに呼び出されるメソッドに渡すオブジェクト。

例外

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

timeout が 0 未満です。

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

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

hostNameOrAddress を有効な IP アドレスに解決できませんでした。

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

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

注釈

メソッドは SendAsync エコー メッセージを非同期的に送信し、操作が完了すると (正常または失敗)、状態をアプリケーションに返します。 アプリケーションが SendAsync ブロックしない場合は、 メソッドを呼び出します。 各呼び出しは、スレッド プールから自動的に割り当てられる個別のスレッドで実行されます。 非同期操作が完了すると、 イベントが発生します PingCompleted 。 アプリケーションでは、デリゲートを PingCompletedEventHandler 使用して、 イベントが発生したときに SendAsync 呼び出されるメソッドを指定します。 を呼び出すPingCompletedEventHandlerSendAsync前に、イベントにデリゲートを追加する必要があります。 デリゲートの メソッドは、 PingCompletedEventArgs 呼び出しの結果を記述する オブジェクトを PingReply 含む オブジェクトを SendAsync 受け取ります。 オブジェクトは PingCompletedEventArgs プロパティを UserState 継承します。 このプロパティには、呼び出しに userToken 渡されるオブジェクトが SendAsync 含まれます。

応答の待機中にアプリケーションがブロックする必要がある場合は、 メソッドを Send 使用します。これらのメソッドは同期的です。

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

注意

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

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

適用対象