IPStatus 열거형

정의

컴퓨터에 ICMP(Internet Control Message Protocol) Echo 메시지를 보낸 결과 상태를 보고합니다.

public enum class IPStatus
public enum IPStatus
type IPStatus = 
Public Enum IPStatus
상속
IPStatus

필드

BadDestination 11018

대상 IP 주소에서 ICMP Echo Request를 받을 수 없거나 대상 IP 주소가 IP 데이터그램의 대상 주소 필드에 나타났기 때문에 ICMP Echo Request에 실패했습니다. 예를 들어, Send를 호출하고 IP 주소를 "000.0.0.0"으로 지정하면 이 상태가 반환됩니다.

BadHeader 11042

헤더가 잘못되어서 ICMP Echo Request에 실패했습니다.

BadOption 11007

잘못된 옵션이 들어 있어서 ICMP Echo Request에 실패했습니다.

BadRoute 11012

소스 컴퓨터와 대상 컴퓨터 간에 올바른 경로가 없어서 ICMP Echo Request에 실패했습니다.

DestinationHostUnreachable 11003

대상 컴퓨터에 연결할 수 없어서 ICMP Echo Request에 실패했습니다.

DestinationNetworkUnreachable 11002

대상 컴퓨터가 포함된 네트워크에 연결할 수 없어서 ICMP Echo Request에 실패했습니다.

DestinationPortUnreachable 11005

대상 컴퓨터의 포트를 사용할 수 없어서 ICMP Echo Request에 실패했습니다.

DestinationProhibited 11004

대상 컴퓨터와의 연결이 관리자에 의해 금지되어 있어서 ICMPv6에 실패했습니다. 이 값은 IPv6에만 적용됩니다.

DestinationProtocolUnreachable 11004

ICMP Echo 메시지에 지정된 대상 컴퓨터가 패킷의 프로토콜을 지원하지 않아 대상 컴퓨터에 연결할 수 없기 때문에 ICMP Echo Request에 실패했습니다. 이 값은 IPv4에만 적용됩니다. 이 값은 IETF RFC 1812에 Communication Administratively Prohibited로 설명되어 있습니다.

DestinationScopeMismatch 11045

ICMP Echo 메시지에 지정된 소스 주소와 대상 주소가 동일한 범위에 있지 않아서 ICMP Echo Request에 실패했습니다. 대개 라우터가 소스 주소의 범위 밖에 있는 인터페이스를 사용하여 패킷을 전송하는 경우 이 문제가 발생합니다. 네트워크에서 유효한 주소로 간주되는 위치는 주소 범위(링크 로컬, 사이트 로컬 및 전역 범위)에 따라 달라집니다.

DestinationUnreachable 11040

ICMP Echo 메시지에 지정된 대상 컴퓨터에 연결할 수 없기 때문에 ICMP Echo Request에 실패했습니다. 문제가 발생한 이유는 정확히 알 수 없습니다.

HardwareError 11008

하드웨어 오류로 인해 ICMP Echo Request에 실패했습니다.

IcmpError 11044

ICMP 프로토콜 오류로 인해 ICMP Echo Request에 실패했습니다.

NoResources 11006

네트워크 리소스가 부족해서 ICMP Echo Request에 실패했습니다.

PacketTooBig 11009

요청이 들어 있는 패킷이 소스와 대상 사이에 있는 노드(라우터 또는 게이트웨이)의 MTU(최대 전송 단위)보다 커서 ICMP Echo Request에 실패했습니다. MTU는 전송 가능한 최대 패킷 크기를 정의합니다.

ParameterProblem 11015

패킷 헤더를 처리하는 중 노드(라우터 또는 게이트웨이)에 문제가 발생해서 ICMP Echo Request에 실패했습니다. 예를 들어, 헤더에 잘못된 필드 데이터나 인식할 수 없는 옵션이 들어 있는 경우 이 문제가 발생합니다.

SourceQuench 11016

패킷이 삭제되어서 ICMP Echo Request에 실패했습니다. 소스 컴퓨터의 출력 큐에 스토리지 공간이 부족하거나 패킷이 너무 빨리 도착해서 처리할 수 없는 경우 이 문제가 발생합니다.

Success 0

ICMP Echo Request에 성공했으며 ICMP Echo Reply를 받았습니다. 이 상태 코드가 표시되는 경우 다른 PingReply 속성에는 유효한 데이터가 들어 있습니다.

TimedOut 11010

할당된 시간 내에 ICMP Echo Reply를 받지 못했습니다. 응답에 허용되는 기본 시간은 5초입니다. timeout 매개 변수를 사용하는 Send 또는 SendAsync 메서드를 사용하여 이 값을 변경할 수 있습니다.

TimeExceeded 11041

TTL(Time to Live) 값이 0에 도달하여 전달 노드(라우터 또는 게이트웨이)에서 패킷을 삭제했기 때문에 ICMP Echo Request에 실패했습니다.

TtlExpired 11013

TTL(Time to Live) 값이 0에 도달하여 전달 노드(라우터 또는 게이트웨이)에서 패킷을 삭제했기 때문에 ICMP Echo Request에 실패했습니다.

TtlReassemblyTimeExceeded 11014

패킷을 조각화하여 전송했는데 리어셈블리에 할당된 시간 내에 모든 조각을 받지 못해서 ICMP Echo Request에 실패했습니다. RFC 2460에서는 모든 패킷 조각을 받아야 하는 제한 시간으로 60초를 지정합니다.

Unknown -1

알 수 없는 이유로 ICMP Echo Request에 실패했습니다.

UnrecognizedNextHeader 11043

Next Header 필드에 인식할 수 있는 값이 들어 있지 않아서 ICMP Echo Request에 실패했습니다. Next Header 필드는 확장 헤더 형식(있는 경우) 또는 IP 계층 위의 프로토콜(예: TCP 또는 UDP)을 나타냅니다.

예제

다음 코드 예제에서는 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);
            }
        }
    }
}

설명

클래스는 Ping 이 열거형의 값을 사용하여 속성을 설정합니다 PingReply.Status . 클래스는 Ping 호출할 때 개체 또는 Ping.SendAsync 메서드를 Ping.Send 반환 PingReply 하여 네트워크를 통해 컴퓨터에 연결할 수 있는지 여부를 확인합니다.

경고

DestinationProhibited 및 DestinationProtocolUnreachable 열거형 값은 동일한 숫자 값을 갖습니다. DestinationProhibited는 IPv6에만 적용되고 DestinationProtocolUnreachable은 IPv4에만 적용되기 때문에 가능합니다.

적용 대상