Ping.SendAsyncとは? わかりやすく解説

Ping.SendAsync メソッド (IPAddress, Object)

メモ : このメソッドは、.NET Framework version 2.0 で新しく追加されたものです。

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

名前空間: System.Net.NetworkInformation
アセンブリ: System (system.dll 内)
構文構文

例外例外
例外の種類条件

ArgumentNullException

address が null 参照 (Visual Basic では Nothing) です。

InvalidOperationException

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

NotSupportedException

address は IPv6 アドレスですが、ローカル コンピュータでは Windows 2000 より前のオペレーティング システムが動作しています。

PingException

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

SocketException

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

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 に設定されます。

使用例使用例
.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

Ping.SendAsync メソッド (IPAddress, Int32, Object)

メモ : このメソッドは、.NET Framework version 2.0 で新しく追加されたものです。

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

名前空間: System.Net.NetworkInformation
アセンブリ: System (system.dll 内)
構文構文

例外例外
例外の種類条件

ArgumentNullException

address が null 参照 (Visual Basic では Nothing) です。

ArgumentOutOfRangeException

timeout が 0 未満です。

InvalidOperationException

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

NotSupportedException

address は IPv6 アドレスですが、ローカル コンピュータでは Windows 2000 より前のオペレーティング システムが動作しています。

PingException

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

SocketException

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

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 に設定されます。

使用例使用例
.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

Ping.SendAsync メソッド (IPAddress, Int32, Byte[], Object)

メモ : このメソッドは、.NET Framework version 2.0 で新しく追加されたものです。

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

名前空間: System.Net.NetworkInformation
アセンブリ: System (system.dll 内)
構文構文

例外例外
例外の種類条件

ArgumentNullException

address が null 参照 (Visual Basic では Nothing) です。

または

buffer が null 参照 (Visual Basic では Nothing) です。

ArgumentOutOfRangeException

timeout が 0 未満です。

InvalidOperationException

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

NotSupportedException

address は IPv6 アドレスですが、ローカル コンピュータでは Windows 2000 より前のオペレーティング システムが動作しています。

PingException

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

SocketException

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

ObjectDisposedException

このオブジェクトは破棄されています。

ArgumentException

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

解説解説

このメソッドは、エコー メッセージを非同期的に送信し、操作が終了 (正常終了と異常終了を含む) したときに、アプリケーションのステータスを返します。アプリケーションがブロックしないようにする場合は、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 に設定されます。

使用例使用例
.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

Ping.SendAsync メソッド (String, Int32, Byte[], Object)

メモ : このメソッドは、.NET Framework version 2.0 で新しく追加されたものです。

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

名前空間: System.Net.NetworkInformation
アセンブリ: 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,
    byte[] buffer,
    Object userToken
)
public:
void SendAsync (
    String^ hostNameOrAddress, 
    int timeout, 
    array<unsigned char>^ buffer, 
    Object^ userToken
)
public void SendAsync (
    String hostNameOrAddress, 
    int timeout, 
    byte[] buffer, 
    Object userToken
)
public function SendAsync (
    hostNameOrAddress : String, 
    timeout : int, 
    buffer : byte[], 
    userToken : Object
)

パラメータ

hostNameOrAddress

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

timeout

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

buffer

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

userToken

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

例外例外
例外の種類条件

ArgumentNullException

hostNameOrAddress が null 参照 (Visual Basic では Nothing) または空の文字列 ("") です。

または

buffer が null 参照 (Visual Basic では Nothing) です。

ArgumentOutOfRangeException

timeout が 0 未満です。

InvalidOperationException

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

NotSupportedException

hostNameOrAddress は IPv6 アドレスですが、ローカル コンピュータでは Windows 2000 より前のオペレーティング システムが動作しています。

PingException

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

SocketException

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

ObjectDisposedException

このオブジェクトは破棄されています。

ArgumentException

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

解説解説

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 に設定されます。

使用例使用例
.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

Ping.SendAsync メソッド (IPAddress, Int32, Byte[], PingOptions, Object)

メモ : このメソッドは、.NET Framework version 2.0 で新しく追加されたものです。

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

名前空間: System.Net.NetworkInformation
アセンブリ: 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
)

パラメータ

address

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

timeout

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

buffer

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

options

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

userToken

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

例外例外
例外の種類条件

ArgumentNullException

address が null 参照 (Visual Basic では Nothing) です。

または

buffer が null 参照 (Visual Basic では Nothing) です。

ArgumentOutOfRangeException

timeout が 0 未満です。

InvalidOperationException

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

NotSupportedException

address は IPv6 アドレスですが、ローカル コンピュータでは Windows 2000 より前のオペレーティング システムが動作しています。

PingException

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

SocketException

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

ObjectDisposedException

このオブジェクトは破棄されています。

ArgumentException

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

解説解説

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 メソッドのオーバーロードの例を参照してください。

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

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

.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

Ping.SendAsync メソッド (String, Int32, Byte[], PingOptions, Object)

メモ : このメソッドは、.NET Framework version 2.0 で新しく追加されたものです。

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

名前空間: System.Net.NetworkInformation
アセンブリ: 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
)

パラメータ

hostNameOrAddress

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

timeout

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

buffer

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

options

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

userToken

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

例外例外
例外の種類条件

ArgumentNullException

hostNameOrAddress が null 参照 (Visual Basic では Nothing) または空の文字列 ("") です。

または

buffer が null 参照 (Visual Basic では Nothing) です。

ArgumentOutOfRangeException

timeout が 0 未満です。

InvalidOperationException

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

NotSupportedException

address は IPv6 アドレスですが、ローカル コンピュータでは Windows 2000 より前のオペレーティング システムが動作しています。

PingException

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

SocketException

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

ObjectDisposedException

このオブジェクトは破棄されています。

ArgumentException

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

解説解説

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);
            }
        }
    }
}
.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

Ping.SendAsync メソッド

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

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

関連項目

Ping クラス
Ping メンバ
System.Net.NetworkInformation 名前空間

Ping.SendAsync メソッド (String, Object)

メモ : このメソッドは、.NET Framework version 2.0 で新しく追加されたものです。

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

名前空間: System.Net.NetworkInformation
アセンブリ: System (system.dll 内)
構文構文

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

instance.SendAsync(hostNameOrAddress, userToken)
public void SendAsync (
    string hostNameOrAddress,
    Object userToken
)
public:
void SendAsync (
    String^ hostNameOrAddress, 
    Object^ userToken
)
public void SendAsync (
    String hostNameOrAddress, 
    Object userToken
)
public function SendAsync (
    hostNameOrAddress : String, 
    userToken : Object
)

パラメータ

hostNameOrAddress

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

userToken

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

例外例外
例外の種類条件

ArgumentNullException

hostNameOrAddress が null 参照 (Visual Basic では Nothing) または空の文字列 ("") です。

InvalidOperationException

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

NotSupportedException

address は IPv6 アドレスですが、ローカル コンピュータでは Windows 2000 より前のオペレーティング システムが動作しています。

PingException

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

SocketException

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

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 に設定されます。

使用例使用例
.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

Ping.SendAsync メソッド (String, Int32, Object)

メモ : このメソッドは、.NET Framework version 2.0 で新しく追加されたものです。

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

名前空間: System.Net.NetworkInformation
アセンブリ: 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)
public void SendAsync (
    string hostNameOrAddress,
    int timeout,
    Object userToken
)
public:
void SendAsync (
    String^ hostNameOrAddress, 
    int timeout, 
    Object^ userToken
)
public void SendAsync (
    String hostNameOrAddress, 
    int timeout, 
    Object userToken
)
public function SendAsync (
    hostNameOrAddress : String, 
    timeout : int, 
    userToken : Object
)

パラメータ

hostNameOrAddress

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

timeout

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

userToken

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

例外例外
例外の種類条件

ArgumentNullException

hostNameOrAddress が null 参照 (Visual Basic では Nothing) または空の文字列 ("") です。

ArgumentOutOfRangeException

timeout が 0 未満です。

InvalidOperationException

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

NotSupportedException

hostNameOrAddress は IPv6 アドレスですが、ローカル コンピュータでは Windows 2000 より前のオペレーティング システムが動作しています。

PingException

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

SocketException

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

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 に設定されます。

使用例使用例
.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「Ping.SendAsync」の関連用語

Ping.SendAsyncのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Ping.SendAsyncのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS