pingとは? わかりやすく解説

Ping イベント


Ping クラス

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

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

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

解説解説

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

Ping正常にリモート ホスト通信できるかどうかは、ネットワーク トポロジで決まる可能性ありますプロキシNAT (Network Address Translation) 設備、またはファイアウォール存在および設定によっては、Ping正常に動作しない可能性ありますPing成功しても、ネットワーク経由してリモート ホスト到達できることが示されただけです。より高レベルサービス (Web サーバーなど) がリモート ホスト存在するかどうか保証されません。

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

Ping クラス使用される型とその説明を以下に示します

Send メソッドおよび SendAsync メソッドは、PingReply オブジェクト応答返します。PingReply.Status プロパティは、要求結果を示す IPStatus 値を返します

要求送信するときにはリモート コンピュータ指定する必要があります。この指定には、ホスト名文字列文字列形式IP アドレス、または IPAddress オブジェクト使用できます

以下の種類情報指定することもできます

Ping クラスは、要求送信するための同期メソッド非同期メソッド両方提供します応答を待つ間にアプリケーションブロックさせる場合は、Send メソッド使用します。これらは同期メソッドです。アプリケーションブロックさせない場合は、非同期SendAsync メソッド使用しますSendAsync呼び出すと、スレッド プールから自動的に割り当てられる独自のスレッド実行されます。非同期操作完了すると、PingCompleted イベント発生しますアプリケーションは、PingCompletedEventHandler デリゲート使用してPingCompleted イベント呼び出されるメソッド指定しますSendAsync呼び出す前にPingCompletedEventHandler デリゲートイベント追加する必要がありますデリゲートメソッドは、SendAsync 呼び出し結果を表す PingReply オブジェクト格納されPingCompletedEventArgs オブジェクト受け取ります

Ping クラスの同じインスタンス使用して複数ICMP エコー要求同時に生成することはできません。SendAsync呼び出し中に Send呼び出したり、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.");
        }

        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);
            }
        }
    }
}
継承階層継承階層
System.Object
   System.MarshalByRefObject
     System.ComponentModel.Component
      System.Net.NetworkInformation.Ping
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
Ping メンバ
System.Net.NetworkInformation 名前空間

Ping コンストラクタ


Ping プロパティ


Ping メソッド


パブリック メソッドパブリック メソッド

( プロテクト メソッド参照)
  名前 説明
パブリック メソッド CreateObjRef  リモート オブジェクトとの通信使用するプロキシ生成必要な情報をすべて格納しているオブジェクト作成します。 ( MarshalByRefObject から継承されます。)
パブリック メソッド Dispose  オーバーロードされますComponent によって使用されているリソース解放します。 ( Component から継承されます。)
パブリック メソッド Equals  オーバーロードされます2 つObject インスタンス等しかどうか判断します。 ( Object から継承されます。)
パブリック メソッド GetHashCode  特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用適してます。 ( Object から継承されます。)
パブリック メソッド GetLifetimeService  対象インスタンス有効期間ポリシー制御する現在の有効期間サービス オブジェクト取得します。 ( MarshalByRefObject から継承されます。)
パブリック メソッド GetType  現在のインスタンスType取得します。 ( Object から継承されます。)
パブリック メソッド InitializeLifetimeService  対象インスタンス有効期間ポリシー制御する有効期間サービス オブジェクト取得します。 ( MarshalByRefObject から継承されます。)
パブリック メソッド ReferenceEquals  指定した複数Object インスタンス同一かどうか判断します。 ( Object から継承されます。)
パブリック メソッド Send オーバーロードされますICMP (インターネット コントロール メッセージ プロトコル) エコー メッセージリモート コンピュータ送信し、そのリモート コンピュータから対応する ICMP エコー応答メッセージ受信します
パブリック メソッド SendAsync オーバーロードされます非同期的に ICMP (インターネット コントロール メッセージ プロトコル) エコー メッセージコンピュータ送信し、そのコンピュータから対応する ICMP エコー応答メッセージ受信します
パブリック メソッド SendAsyncCancel ICMP (インターネット コントロール メッセージ プロトコル) エコー メッセージの送信対応する ICMP エコー応答メッセージ受信を行う、保留中のすべての非同期要求キャンセルします
パブリック メソッド ToString  Component の名前を格納している String返します (存在する場合)。このメソッドオーバーライドできません。 ( Component から継承されます。)
プロテクト メソッドプロテクト メソッド
明示的インターフェイスの実装明示的インターフェイス実装
  名前 説明
インターフェイスの明示的な実装 System.IDisposable.Dispose Ping クラスインスタンスによって使用されているすべてのリソース解放します。
参照参照

関連項目

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

Ping メンバ

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

Ping データ型公開されるメンバを以下の表に示します


パブリック コンストラクタパブリック コンストラクタ
パブリック プロパティパブリック プロパティ
プロテクト プロパティプロテクト プロパティ
パブリック メソッドパブリック メソッド
( プロテクト メソッド参照)
  名前 説明
パブリック メソッド CreateObjRef  リモート オブジェクトとの通信使用するプロキシ生成必要な情報をすべて格納しているオブジェクト作成します。 (MarshalByRefObject から継承されます。)
パブリック メソッド Dispose  オーバーロードされますComponent によって使用されているリソース解放します。 (Component から継承されます。)
パブリック メソッド Equals  オーバーロードされます2 つObject インスタンス等しかどうか判断します。 (Object から継承されます。)
パブリック メソッド GetHashCode  特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用適してます。 (Object から継承されます。)
パブリック メソッド GetLifetimeService  対象インスタンス有効期間ポリシー制御する現在の有効期間サービス オブジェクト取得します。 (MarshalByRefObject から継承されます。)
パブリック メソッド GetType  現在のインスタンスType取得します。 (Object から継承されます。)
パブリック メソッド InitializeLifetimeService  対象インスタンス有効期間ポリシー制御する有効期間サービス オブジェクト取得します。 (MarshalByRefObject から継承されます。)
パブリック メソッド ReferenceEquals  指定した複数Object インスタンス同一かどうか判断します。 (Object から継承されます。)
パブリック メソッド Send オーバーロードされますICMP (インターネット コントロール メッセージ プロトコル) エコー メッセージリモート コンピュータ送信し、そのリモート コンピュータから対応する ICMP エコー応答メッセージ受信します
パブリック メソッド SendAsync オーバーロードされます非同期的に ICMP (インターネット コントロール メッセージ プロトコル) エコー メッセージコンピュータ送信し、そのコンピュータから対応する ICMP エコー応答メッセージ受信します
パブリック メソッド SendAsyncCancel ICMP (インターネット コントロール メッセージ プロトコル) エコー メッセージの送信対応する ICMP エコー応答メッセージ受信を行う、保留中のすべての非同期要求キャンセルします
パブリック メソッド ToString  Component の名前を格納している String返します (存在する場合)。このメソッドオーバーライドできません。 (Component から継承されます。)
プロテクト メソッドプロテクト メソッド
パブリック イベントパブリック イベント
明示的インターフェイスの実装明示的インターフェイス実装
  名前 説明
インターフェイスの明示的な実装 System.IDisposable.Dispose Ping クラスインスタンスによって使用されているすべてのリソース解放します。
参照参照

関連項目

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




固有名詞の分類

このページでは「.NET Framework クラス ライブラリ リファレンス」からpingを検索した結果を表示しています。
Weblioに収録されているすべての辞書からpingを検索する場合は、下記のリンクをクリックしてください。
 全ての辞書からpingを検索

英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「ping」の関連用語

pingのお隣キーワード
検索ランキング

   

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



pingのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

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

©2024 GRAS Group, Inc.RSS