IPStatus IPStatus IPStatus IPStatus Enum
Definition
Reports the status of sending an Internet Control Message Protocol (ICMP) echo message to a computer.
public enum class IPStatus
public enum IPStatus
type IPStatus =
Public Enum IPStatus
- Inheritance
Fields
BadDestination BadDestination BadDestination BadDestination | 11018 | The ICMP echo request failed because the destination IP address cannot receive ICMP echo requests or should never appear in the destination address field of any IP datagram. For example, calling Send and specifying IP address "000.0.0.0" returns this status. |
BadHeader BadHeader BadHeader BadHeader | 11042 | The ICMP echo request failed because the header is invalid. |
BadOption BadOption BadOption BadOption | 11007 | The ICMP echo request failed because it contains an invalid option. |
BadRoute BadRoute BadRoute BadRoute | 11012 | The ICMP echo request failed because there is no valid route between the source and destination computers. |
DestinationHostUnreachable DestinationHostUnreachable DestinationHostUnreachable DestinationHostUnreachable | 11003 | The ICMP echo request failed because the destination computer is not reachable. |
DestinationNetworkUnreachable DestinationNetworkUnreachable DestinationNetworkUnreachable DestinationNetworkUnreachable | 11002 | The ICMP echo request failed because the network that contains the destination computer is not reachable. |
DestinationPortUnreachable DestinationPortUnreachable DestinationPortUnreachable DestinationPortUnreachable | 11005 | The ICMP echo request failed because the port on the destination computer is not available. |
DestinationProhibited DestinationProhibited DestinationProhibited DestinationProhibited | 11004 | The ICMPv6 echo request failed because contact with the destination computer is administratively prohibited. This value applies only to IPv6. |
DestinationProtocolUnreachable DestinationProtocolUnreachable DestinationProtocolUnreachable DestinationProtocolUnreachable | 11004 | The ICMP echo request failed because the destination computer that is specified in an ICMP echo message is not reachable, because it does not support the packet's protocol. This value applies only to IPv4. This value is described in IETF RFC 1812 as Communication Administratively Prohibited. |
DestinationScopeMismatch DestinationScopeMismatch DestinationScopeMismatch DestinationScopeMismatch | 11045 | The ICMP echo request failed because the source address and destination address that are specified in an ICMP echo message are not in the same scope. This is typically caused by a router forwarding a packet using an interface that is outside the scope of the source address. Address scopes (link-local, site-local, and global scope) determine where on the network an address is valid. |
DestinationUnreachable DestinationUnreachable DestinationUnreachable DestinationUnreachable | 11040 | The ICMP echo request failed because the destination computer that is specified in an ICMP echo message is not reachable; the exact cause of problem is unknown. |
HardwareError HardwareError HardwareError HardwareError | 11008 | The ICMP echo request failed because of a hardware error. |
IcmpError IcmpError IcmpError IcmpError | 11044 | The ICMP echo request failed because of an ICMP protocol error. |
NoResources NoResources NoResources NoResources | 11006 | The ICMP echo request failed because of insufficient network resources. |
PacketTooBig PacketTooBig PacketTooBig PacketTooBig | 11009 | The ICMP echo request failed because the packet containing the request is larger than the maximum transmission unit (MTU) of a node (router or gateway) located between the source and destination. The MTU defines the maximum size of a transmittable packet. |
ParameterProblem ParameterProblem ParameterProblem ParameterProblem | 11015 | The ICMP echo request failed because a node (router or gateway) encountered problems while processing the packet header. This is the status if, for example, the header contains invalid field data or an unrecognized option. |
SourceQuench SourceQuench SourceQuench SourceQuench | 11016 | The ICMP echo request failed because the packet was discarded. This occurs when the source computer's output queue has insufficient storage space, or when packets arrive at the destination too quickly to be processed. |
Success Success Success Success | 0 | The ICMP echo request succeeded; an ICMP echo reply was received. When you get this status code, the other PingReply properties contain valid data. |
TimedOut TimedOut TimedOut TimedOut | 11010 | The ICMP echo Reply was not received within the allotted time. The default time allowed for replies is 5 seconds. You can change this value using the Send or SendAsync methods that take a |
TimeExceeded TimeExceeded TimeExceeded TimeExceeded | 11041 | The ICMP echo request failed because its Time to Live (TTL) value reached zero, causing the forwarding node (router or gateway) to discard the packet. |
TtlExpired TtlExpired TtlExpired TtlExpired | 11013 | The ICMP echo request failed because its Time to Live (TTL) value reached zero, causing the forwarding node (router or gateway) to discard the packet. |
TtlReassemblyTimeExceeded TtlReassemblyTimeExceeded TtlReassemblyTimeExceeded TtlReassemblyTimeExceeded | 11014 | The ICMP echo request failed because the packet was divided into fragments for transmission and all of the fragments were not received within the time allotted for reassembly. RFC 2460 (available at www.ietf.org) specifies 60 seconds as the time limit within which all packet fragments must be received. |
Unknown Unknown Unknown Unknown | -1 | The ICMP echo request failed for an unknown reason. |
UnrecognizedNextHeader UnrecognizedNextHeader UnrecognizedNextHeader UnrecognizedNextHeader | 11043 | The ICMP echo request failed because the Next Header field does not contain a recognized value. The Next Header field indicates the extension header type (if present) or the protocol above the IP layer, for example, TCP or UDP. |
Examples
The following code example sends an ICMP echo message and checks the status.
#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);
}
}
}
}
Remarks
The Ping class uses the values in this enumeration to set the PingReply.Status property. The Ping class returns PingReply objects when you call the Ping.Send or Ping.SendAsync methods to check whether you can reach a computer across the network.
Warning
The DestinationProhibited and DestinationProtocolUnreachable enumeration values have the same numeric value. This is possible because DestinationProhibited applies only to IPv6 and DestinationProtocolUnreachable applies only to IPv4.
Applies to
Feedback
We'd love to hear your thoughts. Choose the type you'd like to provide:
Our feedback system is built on GitHub Issues. Read more on our blog.
Loading feedback...