Ping.SendAsync メソッド (IPAddress, Object)
アセンブリ: System (system.dll 内)

Dim instance As Ping Dim address As IPAddress Dim userToken As Object instance.SendAsync(address, userToken)

例外の種類 | 条件 |
---|---|
ArgumentNullException | address が null 参照 (Visual Basic では Nothing) です。 |
InvalidOperationException | |
NotSupportedException | address は IPv6 アドレスですが、ローカル コンピュータでは Windows 2000 より前のオペレーティング システムが動作しています。 |
PingException | ICMP メッセージの送信中または受信中に例外がスローされました。スローされた実際の例外については内部例外を参照してください。 |
SocketException | |
ObjectDisposedException |

SendAsync メソッドは、エコー メッセージを非同期的に送信し、操作が終了 (正常終了と異常終了を含む) したときに、アプリケーションのステータスを返します。アプリケーションがブロックしないようにする場合は、SendAsync メソッドを呼び出します。このメソッドの各呼び出しは、スレッド プールから自動的に割り当てられた別個のスレッドで実行されます。非同期操作が完了すると、PingCompleted イベントが発生します。SendAsync でイベントが発生したときに呼び出されるメソッドを指定するには、SendAsync を呼び出す前に、PingCompletedEventHandler デリゲートをイベントに追加する必要があります。デリゲートのメソッドは、SendAsync 呼び出しの結果を表す PingReply オブジェクトが格納された PingCompletedEventArgs オブジェクトを受け取ります。PingCompletedEventArgs オブジェクトは、UserState プロパティを継承します。このプロパティは、SendAsync の呼び出しに渡された userToken オブジェクトを保持します。
![]() |
---|
応答を待つ間にアプリケーションをブロックさせる場合は、いずれかの Send メソッドを使用します。これらは同期メソッドです。 |
このメソッドは、32 バイト (Byte) のデータ バッファを ICMP エコー メッセージと共に送信します。このメソッドは、ICMP エコー応答メッセージを 5 秒間待ちます。その時間内に応答を受信しない場合はメソッドから制御が戻り、Status プロパティに TimedOut が設定されます。
このオーバーロードでは、パケットのフラグメンテーションと転送に既定の設定が使用されます。ICMP エコー メッセージが格納されたパケットは、合計パケット サイズが、1 つのルーティング ノードがローカル コンピュータとリモート コンピュータ間で送信できる最大パケット サイズを超えた場合、途中で分割される場合があります。断片化を防ぐには、options パラメータを受け取る、SendAsync のいずれかのメソッドを使用し、DontFragment プロパティを true に設定します。DontFragment が true のときに、合計パケット サイズが、ローカル コンピュータとリモート コンピュータの間にあるいずれかのルーティング ノードで送信できる最大パケット サイズを超えた場合、ICMP エコー要求は失敗します。これが発生した場合、Status は PacketTooBig に設定されます。
パケットまたはパケット フラグメントは、破棄されるまでに、ルーティング ノードによって最大 128 回転送されます。この設定を変更するには、options パラメータを受け取る SendAsync のオーバーロードを使用し、Ttl プロパティを必要な値に設定します。パケットが指定回数転送されても送信先に到達しなかった場合、パケットは破棄され、ICMP エコー要求は失敗します。これが発生した場合、Status は TtlExpired に設定されます。



Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Ping.SendAsync メソッド (IPAddress, Int32, Object)
アセンブリ: System (system.dll 内)

Dim instance As Ping Dim address As IPAddress Dim timeout As Integer Dim userToken As Object instance.SendAsync(address, timeout, userToken)

例外の種類 | 条件 |
---|---|
ArgumentNullException | address が null 参照 (Visual Basic では Nothing) です。 |
ArgumentOutOfRangeException | |
InvalidOperationException | |
NotSupportedException | address は IPv6 アドレスですが、ローカル コンピュータでは Windows 2000 より前のオペレーティング システムが動作しています。 |
PingException | ICMP メッセージの送信中または受信中に例外がスローされました。スローされた実際の例外については内部例外を参照してください。 |
SocketException | |
ObjectDisposedException |

SendAsync メソッドは、エコー メッセージを非同期的に送信し、操作が終了 (正常終了と異常終了を含む) したときに、アプリケーションのステータスを返します。アプリケーションがブロックしないようにする場合は、SendAsync メソッドを呼び出します。各呼び出しは、スレッド プールから自動的に割り当てられた別個のスレッドで実行されます。非同期操作が完了すると、PingCompleted イベントが発生します。アプリケーションでは、PingCompletedEventHandler デリゲートを使用して、SendAsync でイベントが発生したときに呼び出されるメソッドを指定します。SendAsync を呼び出す前に、PingCompletedEventHandler デリゲートをイベントに追加する必要があります。デリゲートのメソッドは、SendAsync 呼び出しの結果を表す PingReply オブジェクトが格納された PingCompletedEventArgs オブジェクトを受け取ります。PingCompletedEventArgs オブジェクトは、UserState プロパティを継承します。このプロパティは、SendAsync の呼び出しに渡された userToken オブジェクトを保持します。
応答を待つ間にアプリケーションをブロックさせる場合は、Send メソッドを使用します。これらは同期メソッドです。
timeout パラメータによって指定された時間以内に ICMP エコー応答メッセージが受信されなかった場合、ICMP エコーは失敗し、Status プロパティに TimedOut が設定されます。
![]() |
---|
timeout に指定した数値が非常に小さい場合、timeout のミリ秒数が経過した後に Ping の応答が受信されることもあります。 |
このオーバーロードでは、パケットのフラグメンテーションと転送に既定の設定が使用されます。ICMP エコー メッセージが格納されたパケットは、合計パケット サイズが、1 つのルーティング ノードがローカル コンピュータとリモート コンピュータ間で送信できる最大パケット サイズを超えた場合、途中で分割される場合があります。断片化を防ぐには、options パラメータを受け取る、SendAsync のいずれかのメソッドを使用し、DontFragment プロパティを true に設定します。DontFragment が true のときに、合計パケット サイズが、ローカル コンピュータとリモート コンピュータの間にあるいずれかのルーティング ノードで送信できる最大パケット サイズを超えた場合、ICMP エコー要求は失敗します。これが発生した場合、Status は PacketTooBig に設定されます。パケットまたはパケット フラグメント (分割されていた場合) は、破棄されるまでに、ルーティング ノードによって最大 128 回転送されます。この設定を変更するには、options パラメータを受け取る SendAsync のオーバーロードを使用し、Ttl プロパティを必要な値に設定します。パケットが指定回数転送されても送信先に到達しなかった場合、パケットは破棄され、ICMP エコー要求は失敗します。これが発生した場合、Status は TtlExpired に設定されます。



Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Ping.SendAsync メソッド (IPAddress, Int32, Byte[], Object)
アセンブリ: System (system.dll 内)

Public Sub SendAsync ( _ address As IPAddress, _ timeout As Integer, _ buffer As Byte(), _ userToken As Object _ )
Dim instance As Ping Dim address As IPAddress Dim timeout As Integer Dim buffer As Byte() Dim userToken As Object instance.SendAsync(address, timeout, buffer, userToken)
public: void SendAsync ( IPAddress^ address, int timeout, array<unsigned char>^ buffer, Object^ userToken )
public function SendAsync ( address : IPAddress, timeout : int, buffer : byte[], userToken : Object )

例外の種類 | 条件 |
---|---|
ArgumentNullException | address が null 参照 (Visual Basic では Nothing) です。 または buffer が null 参照 (Visual Basic では Nothing) です。 |
ArgumentOutOfRangeException | |
InvalidOperationException | |
NotSupportedException | address は IPv6 アドレスですが、ローカル コンピュータでは Windows 2000 より前のオペレーティング システムが動作しています。 |
PingException | ICMP メッセージの送信中または受信中に例外がスローされました。スローされた実際の例外については内部例外を参照してください。 |
SocketException | |
ObjectDisposedException | |
ArgumentException |

このメソッドは、エコー メッセージを非同期的に送信し、操作が終了 (正常終了と異常終了を含む) したときに、アプリケーションのステータスを返します。アプリケーションがブロックしないようにする場合は、SendAsync メソッドを呼び出します。各呼び出しは、スレッド プールから自動的に割り当てられた別個のスレッドで実行されます。非同期操作が完了すると、PingCompleted イベントが発生します。SendAsync でイベントが発生したときに呼び出されるメソッドを指定するには、SendAsync を呼び出す前に、PingCompletedEventHandler デリゲートをイベントに追加する必要があります。デリゲートのメソッドは、SendAsync 呼び出しの結果を表す PingReply オブジェクトが格納された PingCompletedEventArgs オブジェクトを受け取ります。PingCompletedEventArgs オブジェクトは、UserState プロパティを継承します。このプロパティは、SendAsync の呼び出しに渡された userToken オブジェクトを保持します。
![]() |
---|
応答を待つ間にアプリケーションをブロックさせる場合は、いずれかのSend メソッドを使用します。これらは同期メソッドです。 |
timeout パラメータによって指定された時間以内に ICMP エコー応答メッセージが受信されなかった場合、ICMP エコーは失敗し、Status プロパティに TimedOut が設定されます。
![]() |
---|
timeout に指定した数値が非常に小さい場合、timeout のミリ秒数が経過した後に Ping の応答が受信されることもあります。 |
このオーバーロードでは、パケットのフラグメンテーションと転送に既定の設定が使用されます。ICMP エコー メッセージが格納されたパケットは、合計パケット サイズが、1 つのルーティング ノードがローカル コンピュータとリモート コンピュータ間で送信できる最大パケット サイズを超えた場合、途中で分割される場合があります。断片化を防ぐには、options パラメータを受け取る、SendAsync のいずれかのメソッドを使用し、DontFragment プロパティを true に設定します。DontFragment が true のときに、合計パケット サイズが、ローカル コンピュータとリモート コンピュータの間にあるいずれかのルーティング ノードで送信できる最大パケット サイズを超えた場合、ICMP エコー要求は失敗します。これが発生した場合、Status は PacketTooBig に設定されます。パケットまたはパケット フラグメント (分割されていた場合) は、破棄されるまでに、ルーティング ノードによって最大 128 回転送されます。この設定を変更するには、options パラメータを受け取る SendASync のオーバーロードを使用し、Ttl プロパティを必要な値に設定します。パケットが指定回数転送されても送信先に到達しなかった場合、パケットは破棄され、ICMP エコー要求は失敗します。これが発生した場合、Status は TtlExpired に設定されます。



Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Ping.SendAsync メソッド (String, Int32, Byte[], Object)
アセンブリ: System (system.dll 内)

Public Sub SendAsync ( _ hostNameOrAddress As String, _ timeout As Integer, _ buffer As Byte(), _ userToken As Object _ )
Dim instance As Ping Dim hostNameOrAddress As String Dim timeout As Integer Dim buffer As Byte() Dim userToken As Object instance.SendAsync(hostNameOrAddress, timeout, buffer, userToken)
public: void SendAsync ( String^ hostNameOrAddress, int timeout, array<unsigned char>^ buffer, Object^ userToken )
public function SendAsync ( hostNameOrAddress : String, timeout : int, buffer : byte[], userToken : Object )

例外の種類 | 条件 |
---|---|
ArgumentNullException | hostNameOrAddress が null 参照 (Visual Basic では Nothing) または空の文字列 ("") です。 または buffer が null 参照 (Visual Basic では Nothing) です。 |
ArgumentOutOfRangeException | |
InvalidOperationException | |
NotSupportedException | hostNameOrAddress は IPv6 アドレスですが、ローカル コンピュータでは Windows 2000 より前のオペレーティング システムが動作しています。 |
PingException | ICMP メッセージの送信中または受信中に例外がスローされました。スローされた実際の例外については内部例外を参照してください。 |
SocketException | |
ObjectDisposedException | |
ArgumentException |

SendAsync メソッドは、エコー メッセージを非同期的に送信し、操作が終了 (正常終了と異常終了を含む) したときに、アプリケーションのステータスを返します。アプリケーションがブロックしないようにする場合は、SendAsync メソッドを呼び出します。各呼び出しは、スレッド プールから自動的に割り当てられた別個のスレッドで実行されます。非同期操作が完了すると、PingCompleted イベントが発生します。アプリケーションでは、PingCompletedEventHandler デリゲートを使用して、SendAsync でイベントが発生したときに呼び出されるメソッドを指定します。SendAsync を呼び出す前に、PingCompletedEventHandler デリゲートをイベントに追加する必要があります。デリゲートのメソッドは、SendAsync 呼び出しの結果を表す PingReply オブジェクトが格納された PingCompletedEventArgs オブジェクトを受け取ります。PingCompletedEventArgs オブジェクトは、UserState プロパティを継承します。このプロパティは、SendAsync の呼び出しに渡された userToken オブジェクトを保持します。
応答を待つ間にアプリケーションをブロックさせる場合は、Send メソッドを使用します。これらは同期メソッドです。
timeout パラメータによって指定された時間以内に ICMP エコー応答メッセージが受信されなかった場合、ICMP エコーは失敗し、Status プロパティに TimedOut が設定されます。
![]() |
---|
timeout に指定した数値が非常に小さい場合、timeout のミリ秒数が経過した後に Ping の応答が受信されることもあります。 |
このオーバーロードでは、パケットのフラグメンテーションと転送に既定の設定が使用されます。ICMP エコー メッセージが格納されたパケットは、合計パケット サイズが、1 つのルーティング ノードがローカル コンピュータとリモート コンピュータ間で送信できる最大パケット サイズを超えた場合、途中で分割される場合があります。断片化を防ぐには、options パラメータを受け取る、SendAsync のいずれかのメソッドを使用し、DontFragment プロパティを true に設定します。DontFragment が true のときに、合計パケット サイズが、ローカル コンピュータとリモート コンピュータの間にあるいずれかのルーティング ノードで送信できる最大パケット サイズを超えた場合、ICMP エコー要求は失敗します。これが発生した場合、Status は PacketTooBig に設定されます。パケットまたはパケット フラグメント (分割されていた場合) は、破棄されるまでに、ルーティング ノードによって最大 128 回転送されます。この設定を変更するには、options パラメータを受け取る SendAsync のオーバーロードを使用し、Ttl プロパティを必要な値に設定します。パケットが指定回数転送されても送信先に到達しなかった場合、パケットは破棄され、ICMP エコー要求は失敗します。これが発生した場合、Status は TtlExpired に設定されます。



Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Ping.SendAsync メソッド (IPAddress, Int32, Byte[], PingOptions, Object)
アセンブリ: System (system.dll 内)

Public Sub SendAsync ( _ address As IPAddress, _ timeout As Integer, _ buffer As Byte(), _ options As PingOptions, _ userToken As Object _ )
Dim instance As Ping Dim address As IPAddress Dim timeout As Integer Dim buffer As Byte() Dim options As PingOptions Dim userToken As Object instance.SendAsync(address, timeout, buffer, options, userToken)
public void SendAsync ( IPAddress address, int timeout, byte[] buffer, PingOptions options, Object userToken )
public: void SendAsync ( IPAddress^ address, int timeout, array<unsigned char>^ buffer, PingOptions^ options, Object^ userToken )
public void SendAsync ( IPAddress address, int timeout, byte[] buffer, PingOptions options, Object userToken )
public function SendAsync ( address : IPAddress, timeout : int, buffer : byte[], options : PingOptions, userToken : Object )

例外の種類 | 条件 |
---|---|
ArgumentNullException | address が null 参照 (Visual Basic では Nothing) です。 または buffer が null 参照 (Visual Basic では Nothing) です。 |
ArgumentOutOfRangeException | |
InvalidOperationException | |
NotSupportedException | address は IPv6 アドレスですが、ローカル コンピュータでは Windows 2000 より前のオペレーティング システムが動作しています。 |
PingException | ICMP メッセージの送信中または受信中に例外がスローされました。スローされた実際の例外については内部例外を参照してください。 |
SocketException | |
ObjectDisposedException | |
ArgumentException |

SendAsync メソッドは、エコー メッセージを非同期的に送信し、操作が終了 (正常終了と異常終了を含む) したときに、アプリケーションのステータスを返します。アプリケーションがブロックしないようにするには、SendAsync メソッドを呼び出します。各呼び出しは、スレッド プールから自動的に割り当てられた別個のスレッドで実行されます。非同期操作が完了すると、PingCompleted イベントが発生します。アプリケーションでは、PingCompletedEventHandler デリゲートを使用して、SendAsync でイベントが発生したときに呼び出されるメソッドを指定します。SendAsync を呼び出す前に、PingCompletedEventHandler デリゲートをイベントに追加する必要があります。デリゲートのメソッドは、SendAsync 呼び出しの結果を表す PingReply オブジェクトが格納された PingCompletedEventArgs オブジェクトを受け取ります。PingCompletedEventArgs オブジェクトは、UserState プロパティを継承します。このプロパティは、SendAsync の呼び出しに渡された userToken オブジェクトを保持します。
応答を待つ間にアプリケーションをブロックさせる場合は、いずれかのSend メソッドを使用します。これらは同期メソッドです。
timeout パラメータによって指定された時間以内に ICMP エコー応答メッセージが受信されなかった場合、ICMP エコーは失敗し、Status プロパティに TimedOut が設定されます。
![]() |
---|
timeout に指定した数値が非常に小さい場合、timeout のミリ秒数が経過した後に Ping の応答が受信されることもあります。 |
DontFragment プロパティが true のときに、合計パケット サイズが、ローカル コンピュータとリモート コンピュータの間にあるいずれかのルーティング ノードで送信できる最大パケット サイズを超えた場合、ICMP エコー要求は失敗します。これが発生した場合、Status は PacketTooBig に設定されます。
Ttl プロパティを使用して、送信先に到達するまでに ICMP エコー メッセージを転送できる最大の回数を指定します。パケットが指定回数転送されても送信先に到達しなかった場合、パケットは破棄され、ICMP エコー要求は失敗します。これが発生した場合、Status は TtlExpired に設定されます。

このメソッドを呼び出す方法を次のコード例に示します。コールバック メソッドの実装については、SendAsync メソッドのオーバーロードの例を参照してください。
using System; using System.Net; using System.Net.NetworkInformation; using System.Text; using System.Threading;
ICMP エコー メッセージを非同期に送信するコード例を次に示します。
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."); }


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Ping.SendAsync メソッド (String, Int32, Byte[], PingOptions, Object)
アセンブリ: System (system.dll 内)

Public Sub SendAsync ( _ hostNameOrAddress As String, _ timeout As Integer, _ buffer As Byte(), _ options As PingOptions, _ userToken As Object _ )
Dim instance As Ping Dim hostNameOrAddress As String Dim timeout As Integer Dim buffer As Byte() Dim options As PingOptions Dim userToken As Object instance.SendAsync(hostNameOrAddress, timeout, buffer, options, userToken)
public void SendAsync ( string hostNameOrAddress, int timeout, byte[] buffer, PingOptions options, Object userToken )
public: void SendAsync ( String^ hostNameOrAddress, int timeout, array<unsigned char>^ buffer, PingOptions^ options, Object^ userToken )
public void SendAsync ( String hostNameOrAddress, int timeout, byte[] buffer, PingOptions options, Object userToken )
public function SendAsync ( hostNameOrAddress : String, timeout : int, buffer : byte[], options : PingOptions, userToken : Object )

例外の種類 | 条件 |
---|---|
ArgumentNullException | hostNameOrAddress が null 参照 (Visual Basic では Nothing) または空の文字列 ("") です。 または buffer が null 参照 (Visual Basic では Nothing) です。 |
ArgumentOutOfRangeException | |
InvalidOperationException | |
NotSupportedException | address は IPv6 アドレスですが、ローカル コンピュータでは Windows 2000 より前のオペレーティング システムが動作しています。 |
PingException | ICMP メッセージの送信中または受信中に例外がスローされました。スローされた実際の例外については内部例外を参照してください。 |
SocketException | |
ObjectDisposedException | |
ArgumentException |

SendAsync メソッドは、エコー メッセージを非同期的に送信し、操作が終了 (正常終了と異常終了を含む) したときに、アプリケーションのステータスを返します。アプリケーションがブロックしないようにするには、SendAsync メソッドを呼び出します。各呼び出しは、スレッド プールから自動的に割り当てられた別個のスレッドで実行されます。非同期操作が完了すると、PingCompleted イベントが発生します。アプリケーションでは、PingCompletedEventHandler デリゲートを使用して、SendAsync でイベントが発生したときに呼び出されるメソッドを指定します。SendAsync を呼び出す前に、PingCompletedEventHandler デリゲートをイベントに追加する必要があります。デリゲートのメソッドは、SendAsync 呼び出しの結果を表す PingReply オブジェクトが格納された PingCompletedEventArgs オブジェクトを受け取ります。PingCompletedEventArgs オブジェクトは、UserState プロパティを継承します。このプロパティは、SendAsync の呼び出しに渡された userToken オブジェクトを保持します。
応答を待つ間にアプリケーションをブロックさせる場合は、Send メソッドを使用します。これらは同期メソッドです。
timeout パラメータによって指定された時間以内に ICMP エコー応答メッセージが受信されなかった場合、ICMP エコーは失敗し、Status プロパティに TimedOut が設定されます。
![]() |
---|
timeout に指定した数値が非常に小さい場合、timeout のミリ秒数が経過した後に Ping の応答が受信されることもあります。 |
DontFragment プロパティが true のときに、合計パケット サイズが、ローカル コンピュータとリモート コンピュータの間にあるいずれかのルーティング ノードで送信できる最大パケット サイズを超えた場合、ICMP エコー要求は失敗します。これが発生した場合、Status は PacketTooBig に設定されます。
Ttl プロパティを使用して、送信先に到達するまでに ICMP エコー メッセージを転送できる最大の回数を指定します。パケットが指定回数転送されても送信先に到達しなかった場合、パケットは破棄され、ICMP エコー要求は失敗します。これが発生した場合、Status は TtlExpired に設定されます。

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."); } public 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); } } } }


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Ping.SendAsync メソッド


Ping.SendAsync メソッド (String, Object)
アセンブリ: System (system.dll 内)

Dim instance As Ping Dim hostNameOrAddress As String Dim userToken As Object instance.SendAsync(hostNameOrAddress, userToken)

例外の種類 | 条件 |
---|---|
ArgumentNullException | hostNameOrAddress が null 参照 (Visual Basic では Nothing) または空の文字列 ("") です。 |
InvalidOperationException | |
NotSupportedException | address は IPv6 アドレスですが、ローカル コンピュータでは Windows 2000 より前のオペレーティング システムが動作しています。 |
PingException | ICMP メッセージの送信中または受信中に例外がスローされました。スローされた実際の例外については内部例外を参照してください。 |
SocketException | |
ObjectDisposedException |

SendAsync メソッドは、エコー メッセージを非同期的に送信し、操作が終了 (正常終了と異常終了を含む) したときに、アプリケーションのステータスを返します。アプリケーションがブロックしないようにする場合は、SendAsync メソッドを呼び出します。このメソッドの各呼び出しは、スレッド プールから自動的に割り当てられた別個のスレッドで実行されます。非同期操作が完了すると、PingCompleted イベントが発生します。SendAsync でイベントが発生したときに呼び出されるメソッドを指定するには、SendAsync を呼び出す前に、PingCompletedEventHandler デリゲートをイベントに追加する必要があります。デリゲートのメソッドは、SendAsync 呼び出しの結果を表す PingReply オブジェクトが格納された PingCompletedEventArgs オブジェクトを受け取ります。PingCompletedEventArgs オブジェクトは、UserState プロパティを継承します。このプロパティは、SendAsync の呼び出しに渡された userToken オブジェクトを保持します。
![]() |
---|
このメソッドは、32 バイト (Byte) のデータ バッファを ICMP エコー メッセージと共に送信します。このメソッドは、ICMP エコー応答メッセージを 5 秒待ちます。その時間内に応答を受信しない場合はメソッドから制御が戻り、Status プロパティに TimedOut が設定されます。
このオーバーロードでは、パケットのフラグメンテーションと転送に既定の設定が使用されます。ICMP エコー メッセージが格納されたパケットは、合計パケット サイズが、1 つのルーティング ノードがローカル コンピュータとリモート コンピュータ間で送信できる最大パケット サイズを超えた場合、途中で分割される場合があります。断片化を防ぐには、options パラメータを受け取る、SendASync のいずれかのメソッドを使用し、DontFragment プロパティを true に設定します。DontFragment が true のときに、合計パケット サイズが、ローカル コンピュータとリモート コンピュータの間にあるいずれかのルーティング ノードで送信できる最大パケット サイズを超えた場合、ICMP エコー要求は失敗します。これが発生した場合、Status は PacketTooBig に設定されます。
パケットまたはパケット フラグメントは、破棄されるまでに、ルーティング ノードによって最大 128 回転送されます。この設定を変更するには、options パラメータを受け取る SendAsync のオーバーロードを使用し、Ttl プロパティを必要な値に設定します。パケットが指定回数転送されても送信先に到達しなかった場合、パケットは破棄され、ICMP エコー要求は失敗します。これが発生した場合、Status は TtlExpired に設定されます。



Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Ping.SendAsync メソッド (String, Int32, Object)
アセンブリ: System (system.dll 内)

Public Sub SendAsync ( _ hostNameOrAddress As String, _ timeout As Integer, _ userToken As Object _ )
Dim instance As Ping Dim hostNameOrAddress As String Dim timeout As Integer Dim userToken As Object instance.SendAsync(hostNameOrAddress, timeout, userToken)

例外の種類 | 条件 |
---|---|
ArgumentNullException | hostNameOrAddress が null 参照 (Visual Basic では Nothing) または空の文字列 ("") です。 |
ArgumentOutOfRangeException | |
InvalidOperationException | |
NotSupportedException | hostNameOrAddress は IPv6 アドレスですが、ローカル コンピュータでは Windows 2000 より前のオペレーティング システムが動作しています。 |
PingException | ICMP メッセージの送信中または受信中に例外がスローされました。スローされた実際の例外については内部例外を参照してください。 |
SocketException | |
ObjectDisposedException |

SendAsync メソッドは、エコー メッセージを非同期的に送信し、操作が終了 (正常終了と異常終了を含む) したときに、アプリケーションのステータスを返します。アプリケーションがブロックしないようにする場合は、SendAsync メソッドを呼び出します。各呼び出しは、スレッド プールから自動的に割り当てられた別個のスレッドで実行されます。非同期操作が完了すると、PingCompleted イベントが発生します。アプリケーションでは、PingCompletedEventHandler デリゲートを使用して、SendAsync でイベントが発生したときに呼び出されるメソッドを指定します。SendAsync を呼び出す前に、PingCompletedEventHandler デリゲートをイベントに追加する必要があります。デリゲートのメソッドは、SendAsync 呼び出しの結果を表す PingReply オブジェクトが格納された PingCompletedEventArgs オブジェクトを受け取ります。PingCompletedEventArgs オブジェクトは、UserState プロパティを継承します。このプロパティは、SendAsync の呼び出しに渡された userToken オブジェクトを保持します。
応答を待つ間にアプリケーションをブロックさせる場合は、Send メソッドを使用します。これらは同期メソッドです。
timeout パラメータによって指定された時間以内に ICMP エコー応答メッセージが受信されなかった場合、ICMP エコーは失敗し、Status プロパティに TimedOut が設定されます。
![]() |
---|
timeout に指定した数値が非常に小さい場合、timeout のミリ秒数が経過した後に Ping の応答が受信されることもあります。 |
このオーバーロードでは、パケットのフラグメンテーションと転送に既定の設定が使用されます。ICMP エコー メッセージが格納されたパケットは、合計パケット サイズが、1 つのルーティング ノードがローカル コンピュータとリモート コンピュータ間で送信できる最大パケット サイズを超えた場合、途中で分割される場合があります。断片化を防ぐには、options パラメータを受け取る、SendAsync のいずれかのメソッドを使用し、DontFragment プロパティを true に設定します。DontFragment が true のときに、合計パケット サイズが、ローカル コンピュータとリモート コンピュータの間にあるいずれかのルーティング ノードで送信できる最大パケット サイズを超えた場合、ICMP エコー要求は失敗します。これが発生した場合、Status は PacketTooBig に設定されます。パケットまたはパケット フラグメント (分割されていた場合) は、破棄されるまでに、ルーティング ノードによって最大 128 回転送されます。この設定を変更するには、options パラメータを受け取る SendAsync のオーバーロードを使用し、Ttl プロパティを必要な値に設定します。パケットが指定回数転送されても送信先に到達しなかった場合、パケットは破棄され、ICMP エコー要求は失敗します。これが発生した場合、Status は TtlExpired に設定されます。



Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- Ping.SendAsyncのページへのリンク