IPStatus 列挙型

定義

インターネット コントロール メッセージ プロトコル (ICMP) エコー メッセージのコンピューターへの送信ステータスを報告します。

public enum class IPStatus
public enum IPStatus
type IPStatus = 
Public Enum IPStatus
継承
IPStatus

フィールド

BadDestination 11018

送信先の IP アドレスが ICMP エコー要求を受信できないため、または IP データグラムの終点アドレス フィールドに指定できない値であるために、ICMP エコー要求は失敗しました。 たとえば、Send を呼び出し、IP アドレス "000.0.0.0" を指定すると、このステータスが返されます。

BadHeader 11042

ヘッダーが無効なため、ICMP エコー要求は失敗しました。

BadOption 11007

無効なオプションが含まれているため、ICMP エコー要求は失敗しました。

BadRoute 11012

送信元コンピューターと送信先コンピューターの間に有効な経路がないため、ICMP エコー要求は失敗しました。

DestinationHostUnreachable 11003

送信先コンピューターに到達できないため、ICMP エコー要求は失敗しました。

DestinationNetworkUnreachable 11002

送信先コンピューターが含まれるネットワークに到達できないため、ICMP エコー要求は失敗しました。

DestinationPortUnreachable 11005

送信先コンピューターのポートが利用できないため、ICMP エコー要求は失敗しました。

DestinationProhibited 11004

送信先コンピューターとの通信が管理上禁止されているため、ICMPv エコー要求は失敗しました。 この値は IPv6 にのみ適用されます。

DestinationProtocolUnreachable 11004

ICMP エコー メッセージに指定された送信先コンピューターが、パケットのプロトコルをサポートしておらず到達できないため、ICMP エコー要求は失敗しました。 この値は IPv4 にのみ適用されます。 この値は、管理者によって通信が禁止されていることが IETF RFC 1812 に記述されています。

DestinationScopeMismatch 11045

ICMP エコー メッセージに指定された送信元アドレスと終点アドレスが同じスコープにないため、ICMP エコー要求は失敗しました。 これは通常、送信元アドレスのスコープ外にあるインターフェイスを使用してパケットを転送するルーターが原因で発生します。 あるアドレスがネットワーク上で有効な範囲は、アドレス スコープ (リンクローカル、サイトローカル、グローバル スコープ) によって決まります。

DestinationUnreachable 11040

ICMP エコー メッセージに指定された送信先コンピューターに到達できないため、ICMP エコー要求は失敗しました。問題の詳細な原因は不明です。

HardwareError 11008

ハードウェア エラーのため、ICMP エコー要求は失敗しました。

IcmpError 11044

ICMP プロトコル エラーのため、ICMP エコー要求は失敗しました。

NoResources 11006

ネットワーク リソースの不足のため、ICMP エコー要求は失敗しました。

PacketTooBig 11009

要求を格納しているパケットが、送信元と送信先の間にあるノード (ルーターまたはゲートウェイ) の MTU (Maximum Transmission Unit) よりも大きいため、ICMP エコー要求は失敗しました。 MTU は、送信できるパケットの最大サイズを定義します。

ParameterProblem 11015

パケット ヘッダーの処理中にノード (ルーターまたはゲートウェイ) で問題が発生したため、ICMP エコー要求は失敗しました。 たとえば、ヘッダーに無効なフィールド データや認識できないオプションが含まれている場合、このステータスになります。

SourceQuench 11016

パケットが破棄されたため、ICMP エコー要求は失敗しました。 これは、送信元コンピューターの出力キューに十分なストレージ領域がない場合や、送信先に到達するパケットの量が多すぎて処理しきれない場合に発生します。

Success 0

ICMP エコー要求は成功しました。ICMP エコー応答が受信されました。 このステータス コードを取得した場合、他の PingReply プロパティに有効なデータが格納されています。

TimedOut 11010

割り当てられた時間内に ICMP エコー応答が受信されませんでした。 各応答に割り当てられる既定の時間は 5 秒です。 この値は、timeout パラメーターを受け取る Send メソッドまたは SendAsync メソッドを使用して変更できます。

TimeExceeded 11041

有効期間 (TTL: time-to-live) の値が 0 に達し、転送を行うノード (ルーターまたはゲートウェイ) でパケットが破棄されたため、ICMP エコー要求は失敗しました。

TtlExpired 11013

有効期間 (TTL: time-to-live) の値が 0 に達し、転送を行うノード (ルーターまたはゲートウェイ) でパケットが破棄されたため、ICMP エコー要求は失敗しました。

TtlReassemblyTimeExceeded 11014

伝送用に分割されたパケットのフラグメントが、再アセンブルの割り当て時間内にすべて受信されなかったため、ICMP エコー要求は失敗しました。 RFC 2460 では、すべてのパケットのフラグメントは、60 秒以内に受信される必要があると指定されています。

Unknown -1

不明な理由のために ICMP エコー要求は失敗しました。

UnrecognizedNextHeader 11043

認識される値が Next Header フィールドに含まれていないため、ICMP エコー要求は失敗しました。 Next Header フィールドは、拡張ヘッダーの種類 (存在する場合) や、TCP か UDP などの IP 層より上のプロトコルを示します。

次のコード例では、ICMP エコー メッセージを送信し、状態を確認します。

#using <System.dll>

using namespace System;
using namespace System::Net;
using namespace System::Net::NetworkInformation;
using namespace System::Text;

// args[1] can be an IPaddress or host name.
int main()
{
   array<String^>^args = Environment::GetCommandLineArgs();
   
   Ping ^ pingSender = gcnew Ping;
   PingOptions ^ options = gcnew 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";
   array<Byte>^buffer = Encoding::ASCII->GetBytes( data );
   int timeout = 120;
   PingReply ^ reply = pingSender->Send( args[ 1 ], 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 );
   }

   
}
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);
            }
        }
    }
}
open System.Net.NetworkInformation
open System.Text

// args[0] can be an IPaddress or host name.
[<EntryPoint>]
let main args =
    let pingSender = new Ping()

    // Use the default Ttl value which is 128,
    // but change the fragmentation behavior.
    let options = PingOptions()
    options.DontFragment <- true

    // Create a buffer of 32 bytes of data to be transmitted.
    let data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
    let buffer = Encoding.ASCII.GetBytes data
    let timeout = 120
    let reply: PingReply = pingSender.Send(args.[0], timeout, buffer, options)

    match reply.Status with
    | IPStatus.Success ->
        printfn "Address: %O" reply.Address
        printfn "RoundTrip time: %d" reply.RoundtripTime
        printfn "Time to live: %d" reply.Options.Ttl
        printfn "Don't fragment: %b" reply.Options.DontFragment
        printfn "Buffer size: %d" reply.Buffer.Length
        0
    | _ ->
        eprintfn "Error sending ping: %O" reply
        eprintfn "Error was: %O" reply.Status
        1

注釈

クラスは Ping 、この列挙体の値を使用して プロパティを設定します PingReply.Status 。 クラスはPing、 メソッドまたは Ping.SendAsync メソッドを呼び出Ping.Sendして、ネットワーク経由でコンピューターに到達できるかどうかを確認するときにオブジェクトPingReplyを返します。

警告

DestinationProhibited 列挙値と DestinationProtocolUnreachable 列挙値の数値は同じです。 これは、DestinationProhibited が IPv6 にのみ適用され、DestinationProtocolUnreachable が IPv4 にのみ適用されるためです。

適用対象