この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

Ping クラス

 

公開日: 2016年11月

により、アプリケーションがネットワーク経由でリモート コンピューターにアクセスするかどうかを確認します。

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

System.Object
  System.MarshalByRefObject
    System.ComponentModel.Component
      System.Net.NetworkInformation.Ping

public class Ping : Component

名前説明
System_CAPS_pubmethodPing()

Ping クラスの新しいインスタンスを初期化します。

名前説明
System_CAPS_protpropertyCanRaiseEvents

コンポーネントがイベントを発生させることができるかどうかを示す値を取得します。(Component から継承されます。)

System_CAPS_pubpropertyContainer

取得、 IContainer を含む、 Componentです。(Component から継承されます。)

System_CAPS_protpropertyDesignMode

Component がデザイン モードになってるか示す値を取得する。 (Component から継承されます。)

System_CAPS_protpropertyEvents

これに関連付けられているイベント ハンドラーの一覧を取得 Componentします。(Component から継承されます。)

System_CAPS_pubpropertySite

ComponentISite を取得または設定します。 (Component から継承されます。)

名前説明
System_CAPS_pubmethodCreateObjRef(Type)

リモート オブジェクトとの通信に使用するプロキシの生成に必要なすべての関連情報を格納しているオブジェクトを作成します。(MarshalByRefObject から継承されます。)

System_CAPS_pubmethodDispose()

Component によって使用されているすべてのリソースを解放します。(Component から継承されます。)

System_CAPS_protmethodDispose(Boolean)

Ping オブジェクトによって使用されているアンマネージ リソースを解放します。オプションとして、マネージ リソースを破棄することもできます。(Component.Dispose(Boolean) をオーバーライドします。)

System_CAPS_pubmethodEquals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。(Object から継承されます。)

System_CAPS_protmethodFinalize()

Component がガベージ コレクションによって回収される前に、アンマネージ リソースを解放し、その他のクリーンアップ操作を実行します。(Component から継承されます。)

System_CAPS_pubmethodGetHashCode()

既定のハッシュ関数として機能します。(Object から継承されます。)

System_CAPS_pubmethodGetLifetimeService()

このインスタンスの有効期間ポリシーを制御する現在の有効期間サービス オブジェクトを取得します。(MarshalByRefObject から継承されます。)

System_CAPS_protmethodGetService(Type)

Component またはその Container で提供されるサービスを表すオブジェクトを返します。(Component から継承されます。)

System_CAPS_pubmethodGetType()

現在のインスタンスの Type を取得します。(Object から継承されます。)

System_CAPS_pubmethodInitializeLifetimeService()

このインスタンスの有効期間ポリシーを制御する有効期間サービス オブジェクトを取得します。(MarshalByRefObject から継承されます。)

System_CAPS_protmethodMemberwiseClone()

現在の Object の簡易コピーを作成します。(Object から継承されます。)

System_CAPS_protmethodMemberwiseClone(Boolean)

現在の簡易コピーを作成MarshalByRefObjectオブジェクト。(MarshalByRefObject から継承されます。)

System_CAPS_protmethodOnPingCompleted(PingCompletedEventArgs)

PingCompleted イベントを発生させます。

System_CAPS_pubmethodSend(IPAddress)

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

System_CAPS_pubmethodSend(IPAddress, Int32)

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

System_CAPS_pubmethodSend(IPAddress, Int32, Byte[])

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

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

指定したコンピューターに指定されたデータ バッファーでインターネット制御メッセージ プロトコル (ICMP) エコー メッセージを送信しようとする IPAddress し、そのコンピューターから対応する ICMP エコー応答メッセージを受信します。 このオーバー ロードでは、コントロールの断片化と操作のタイムアウト値と ICMP エコー メッセージ パケットの有効期間の値を指定することができます。

System_CAPS_pubmethodSend(String)

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

System_CAPS_pubmethodSend(String, Int32)

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

System_CAPS_pubmethodSend(String, Int32, Byte[])

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

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

指定したコンピューターに指定されたデータ バッファーでインターネット制御メッセージ プロトコル (ICMP) エコー メッセージを送信し、対応する ICMP の受信の試行では、そのコンピューターから応答メッセージをエコーします。 このオーバー ロードでは、コントロールの断片化と操作のタイムアウト値と ICMP パケットの有効期間の値を指定することができます。

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

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

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

持つ、指定したコンピューターを指定されたデータ バッファーとインターネット制御メッセージ プロトコル (ICMP) エコー メッセージを送信しようとするは非同期的に IPAddress, 、およびそのコンピューターから対応する ICMP エコー応答メッセージを受信します。 このオーバー ロードでは、コントロールの断片化と操作のタイムアウト値と ICMP エコー メッセージ パケットの有効期間の値を指定することができます。

System_CAPS_pubmethodSendAsync(IPAddress, Int32, Object)

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

System_CAPS_pubmethodSendAsync(IPAddress, Object)

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

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

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

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

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

System_CAPS_pubmethodSendAsync(String, Int32, Object)

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

System_CAPS_pubmethodSendAsync(String, Object)

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

System_CAPS_pubmethodSendAsyncCancel()

インターネット制御メッセージ プロトコル (ICMP) エコー メッセージを送信するすべての保留中の非同期要求をキャンセルし、対応する ICMP エコー応答メッセージを受信します。

System_CAPS_pubmethodSendPingAsync(IPAddress)

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

System_CAPS_pubmethodSendPingAsync(IPAddress, Int32)

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

System_CAPS_pubmethodSendPingAsync(IPAddress, Int32, Byte[])

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

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

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

System_CAPS_pubmethodSendPingAsync(String)

インターネット制御メッセージ プロトコル (ICMP) エコー メッセージ データを指定して、指定したコンピューターにバッファーに格納し、非同期操作としては、そのコンピューターから対応する ICMP エコー応答メッセージを受信を送信します。

System_CAPS_pubmethodSendPingAsync(String, Int32)

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

System_CAPS_pubmethodSendPingAsync(String, Int32, Byte[])

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

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

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

System_CAPS_pubmethodToString()

返します。、 String の名前を含む、 Component, 、存在する場合。 このメソッドはオーバーライドできません。(Component から継承されます。)

名前説明
System_CAPS_pubeventDisposed

コンポーネントが Dispose メソッドの呼び出しによって破棄されるときに発生します。 (Component から継承されます。)

System_CAPS_pubeventPingCompleted

インターネット制御メッセージ プロトコル (ICMP) エコー メッセージを送信し、対応する ICMP エコー応答メッセージを受信する非同期操作が完了したかが取り消されると発生します。

アプリケーションを使用して、 Ping クラスをリモート コンピューターが到達可能かどうかを検出します。

ネットワーク トポロジを決定できるかどうか Ping リモート ホストに正常にアクセスすることができます。 プレゼンスとプロキシ、ネットワーク アドレス変換 (NAT) 機器、またはファイアウォールの構成を防ぐことができます Ping 失敗します。 正常な Ping ことを示すだけ、リモート ホストは、ネットワーク上にあることができます。 リモート ホスト (Web サーバーの場合) などの高レベル サービスの存在とは限りません。

このクラスは、Ping.exe コマンド ライン ツールと同様の機能を提供します。 SendSendAsync メソッドは、そのコンピューターからリモート コンピューターと ICMP エコー応答メッセージの待機にインターネット制御メッセージ プロトコル (ICMP) エコー要求メッセージを送信します。 ICMP メッセージの詳細については、RFC 792 で利用可能なを参照してください。 http://www.ietf.orgします。

次の型は使用と、 Ping クラスし、後で詳しく説明します。

型名

説明

IPStatus

ICMP エコー要求メッセージの結果を説明するステータス コードを定義します。

PingOptions

により、何回要求パケットを制御する設定を転送できる取得したり構成する (Ttl)、断片化するかどうかと (DontFragment )。

PingReply

ICMP エコー要求の結果が含まれています。

PingException

回復不能なエラーが発生した場合にスローされます。

PingCompletedEventArgs

関連付けられているデータが含まれています PingCompleted イベントは、いつ発生するか、 SendAsync 呼び出しが完了するかは取り消されます。

PingCompletedEventHandler

コールバック メソッドを提供するデリゲートが呼び出されたときに、 SendAsync 呼び出しが完了するかキャンセルします。

SendSendAsync メソッドで応答を返す、 PingReply オブジェクトです。 PingReply.Status プロパティを返します。、 IPStatus の要求の結果を示す値。

要求を送信する場合は、リモート コンピューターを指定する必要があります。 ホスト名の文字列を文字列形式で IP アドレスを提供することによってこれを行う、または IPAddress オブジェクトです。

次の種類の情報を指定することもできます。

  • 要求に付随するデータ。 指定する buffer に特定のサイズのパケットのリモート ホストとネットワーク パスの最大転送ユニットとの間を移動するために必要な時間を学習することができます。 (を参照してください、 Send または SendAsync を受け取るオーバー ロード、 buffer パラメーターです)。

  • かどうか、ICMP エコー パケットの場合は、転送中に断片化していることができます。 (を参照してください、 DontFragment プロパティおよび Send または SendAsync を受け取るオーバー ロード、 options パラメーターです)。

  • 回数ルーティング ノードなど、ルーターまたはゲートウェイ、パケットを転送できる変換先のコンピューターに到達したまたは破棄されます。 (を参照してください TtlSend または SendAsync を受け取るオーバー ロード、 options パラメーターです)。

  • 制限時間は、応答を受信する必要があります。 (を参照してください、 Send または SendAsync を受け取るオーバー ロード、 timeout パラメーター。

Ping クラスは、要求を送信するための同期および非同期のメソッドを提供します。 場合は、アプリケーションは、応答を待機中にブロックする必要がありますを使用して、 Send メソッド; これらのメソッドは同期的です。 場合は、アプリケーションでブロックしないでくださいを使用して、非同期 SendAsync メソッドです。 呼び出し SendAsync スレッド プールから自動的に割り当てられた独自のスレッドで実行します。 非同期操作が完了したらを生成、 PingCompleted イベントです。 アプリケーションを使用して、 PingCompletedEventHandler に対して呼び出されるメソッドを指定するデリゲート PingCompleted イベントです。 追加する必要があります、 PingCompletedEventHandler デリゲートを呼び出す前にイベント SendAsyncです。 デリゲートのメソッドは受信、 PingCompletedEventArgs オブジェクトを含む、 PingReply の結果を記述するオブジェクト、 SendAsync を呼び出します。

同じインスタンスを使用することはできません、 Ping クラスで複数の同時 ICMP エコー要求を生成します。 呼び出す Send 中に、 SendAsync 呼び出しが進行中または呼び出し元では SendAsync 何度も以前のすべての呼び出しの原因が完了前に、 InvalidOperationExceptionです。

次のコード例では、使用方法を示します、 Ping クラスが同期的にします。

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

namespace Examples.System.Net.NetworkInformation.PingTest
{
    public class PingExample
    {
        // args[0] can be an IPaddress or host name.
        public static void Main (string[] args)
        {
            Ping pingSender = new Ping ();
            PingOptions options = new PingOptions ();

            // Use the default Ttl value which is 128,
            // but change the fragmentation behavior.
            options.DontFragment = true;

            // Create a buffer of 32 bytes of data to be transmitted.
            string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
            byte[] buffer = Encoding.ASCII.GetBytes (data);
            int timeout = 120;
            PingReply reply = pingSender.Send (args[0], timeout, buffer, options);
            if (reply.Status == IPStatus.Success)
            {
                Console.WriteLine ("Address: {0}", reply.Address.ToString ());
                Console.WriteLine ("RoundTrip time: {0}", reply.RoundtripTime);
                Console.WriteLine ("Time to live: {0}", reply.Options.Ttl);
                Console.WriteLine ("Don't fragment: {0}", reply.Options.DontFragment);
                Console.WriteLine ("Buffer size: {0}", reply.Buffer.Length);
            }
        }
    }
}

次のコード例では、使用方法を示します、 Ping クラス非同期的にします。

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

.NET Framework
2.0 以降で使用可能

この型のパブリック static (Visual Basic では Shared ) メンバーはスレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

トップに戻る
表示: