通过


Ping.Send 方法

定义

尝试将 Internet 控制消息协议(ICMP)回显消息发送到远程计算机,并从远程计算机接收相应的 ICMP 回显回复消息。

重载

名称 说明
Send(String, TimeSpan, Byte[], PingOptions)

尝试将 Internet 控制消息协议(ICMP)回显消息发送到指定计算机,并从该计算机接收相应的 ICMP 回显回复消息。

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

尝试将具有指定数据缓冲区的 Internet 控制消息协议(ICMP)回显消息发送到指定计算机,并从该计算机接收相应的 ICMP 回显回复消息。 此重载允许为 ICMP 数据包指定操作的超时值,并控制碎片和生存时间值。

Send(IPAddress, TimeSpan, Byte[], PingOptions)

尝试将 Internet 控制消息协议(ICMP)回显消息发送到指定 IPAddress计算机,并从该计算机接收相应的 ICMP 回显回复消息。

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

尝试将具有指定数据缓冲区的 Internet 控制消息协议(ICMP)回显消息发送到具有指定 IPAddress 数据缓冲区的计算机,并从该计算机接收相应的 ICMP 回显回复消息。 通过此重载,可为 ICMP 回显消息数据包指定操作和控制碎片和控制分段和生存时间值。

Send(String, Int32, Byte[])

尝试将具有指定数据缓冲区的 Internet 控制消息协议(ICMP)回显消息发送到指定计算机,并从该计算机接收相应的 ICMP 回显回复消息。 此重载允许指定操作的超时值。

Send(IPAddress, Int32, Byte[])

尝试将具有指定数据缓冲区的 Internet 控制消息协议(ICMP)回显消息发送到具有指定 IPAddress数据缓冲区的计算机,并从该计算机接收相应的 ICMP 回显回复消息。 此重载允许指定操作的超时值。

Send(String, Int32)

尝试将 Internet 控制消息协议(ICMP)回显消息发送到指定计算机,并从该计算机接收相应的 ICMP 回显回复消息。 此方法允许指定操作的超时值。

Send(IPAddress, Int32)

尝试将具有指定数据缓冲区的 Internet 控制消息协议(ICMP)回显消息发送到具有指定 IPAddress数据缓冲区的计算机,并从该计算机接收相应的 ICMP 回显回复消息。 此方法允许指定操作的超时值。

Send(String)

尝试将 Internet 控制消息协议(ICMP)回显消息发送到指定计算机,并从该计算机接收相应的 ICMP 回显回复消息。

Send(IPAddress)

尝试将 Internet 控制消息协议(ICMP)回显消息发送到指定 IPAddress计算机,并从该计算机接收相应的 ICMP 回显回复消息。

注解

任何 Send 重载返回的 IP 地址可能源自恶意远程计算机。 不要使用此方式连接到远程计算机。 使用 DNS 确定要连接到的计算机的 IP 地址。

Send(String, TimeSpan, Byte[], PingOptions)

Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs

尝试将 Internet 控制消息协议(ICMP)回显消息发送到指定计算机,并从该计算机接收相应的 ICMP 回显回复消息。

public:
 System::Net::NetworkInformation::PingReply ^ Send(System::String ^ hostNameOrAddress, TimeSpan timeout, cli::array <System::Byte> ^ buffer, System::Net::NetworkInformation::PingOptions ^ options);
public System.Net.NetworkInformation.PingReply Send(string hostNameOrAddress, TimeSpan timeout, byte[]? buffer, System.Net.NetworkInformation.PingOptions? options);
member this.Send : string * TimeSpan * byte[] * System.Net.NetworkInformation.PingOptions -> System.Net.NetworkInformation.PingReply
Public Function Send (hostNameOrAddress As String, timeout As TimeSpan, buffer As Byte(), options As PingOptions) As PingReply

参数

hostNameOrAddress
String

一个 String 标识作为 ICMP 回显消息目标的计算机。 为此参数指定的值可以是主机名或 IP 地址的字符串表示形式。

timeout
TimeSpan

一个值,该值指定等待 ICMP 回显答复消息的最大时间量(发送回显消息后)。

buffer
Byte[]

一个 Byte 数组,其中包含要与 ICMP 回显消息一起发送并在 ICMP 回显回复消息中返回的数据。 该数组不能包含超过 65,500 个字节。

options
PingOptions

PingOptions用于控制 ICMP 回显消息数据包的碎片和生存时间值的对象。

返回

有关 ICMP 回显回复消息的信息(如果已收到消息)或失败原因(如果未收到任何消息)。

例外

bufferhostNameOrAddressnullhostNameOrAddress空字符串(“)。

timeout 表示小于零毫秒或大于 MaxValue 毫秒的时间。

大小 buffer大于 65,500 字节。

正在调用 SendAsync。

发送或接收 ICMP 消息时引发了异常。 有关引发的确切异常,请参阅内部异常。

此对象已被释放。

适用于

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

Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs

尝试将具有指定数据缓冲区的 Internet 控制消息协议(ICMP)回显消息发送到指定计算机,并从该计算机接收相应的 ICMP 回显回复消息。 此重载允许为 ICMP 数据包指定操作的超时值,并控制碎片和生存时间值。

public:
 System::Net::NetworkInformation::PingReply ^ Send(System::String ^ hostNameOrAddress, int timeout, cli::array <System::Byte> ^ buffer, System::Net::NetworkInformation::PingOptions ^ options);
public System.Net.NetworkInformation.PingReply Send(string hostNameOrAddress, int timeout, byte[] buffer, System.Net.NetworkInformation.PingOptions? options);
public System.Net.NetworkInformation.PingReply Send(string hostNameOrAddress, int timeout, byte[] buffer, System.Net.NetworkInformation.PingOptions options);
member this.Send : string * int * byte[] * System.Net.NetworkInformation.PingOptions -> System.Net.NetworkInformation.PingReply
Public Function Send (hostNameOrAddress As String, timeout As Integer, buffer As Byte(), options As PingOptions) As PingReply

参数

hostNameOrAddress
String

一个 String 标识作为 ICMP 回显消息目标的计算机。 为此参数指定的值可以是主机名或 IP 地址的字符串表示形式。

timeout
Int32

一个 Int32 值,该值指定等待 ICMP 回显回复消息的最大毫秒数(发送回显消息后)。

buffer
Byte[]

一个 Byte 数组,其中包含要与 ICMP 回显消息一起发送并在 ICMP 回显回复消息中返回的数据。 该数组不能包含超过 65,500 个字节。

options
PingOptions

PingOptions用于控制 ICMP 回显消息数据包的碎片和生存时间值的对象。

返回

一个 PingReply 对象,它提供有关 ICMP 回显答复消息(如果收到消息)的信息,或者提供失败的原因(如果未收到任何消息)。

例外

大小 buffer 超过 65500 字节。

hostNameOrAddressnull 或为零长度字符串。

-或-

buffernull

timeout 小于零。

调用 SendAsync 正在进行中。

发送或接收 ICMP 消息时引发了异常。 有关引发的确切异常,请参阅内部异常。

此对象已被释放。

仅限 Linux 上的 .NET 7 及更高版本:进程为非特权, buffer 不为空。

示例

下面的代码示例演示如何调用此方法。

public static void ComplexPing ()
{
    Ping pingSender = new Ping ();

    // Create a buffer of 32 bytes of data to be transmitted.
    string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
    byte[] buffer = Encoding.ASCII.GetBytes (data);

    // Wait 10 seconds for a reply.
    int timeout = 10000;

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

    // Send the request.
    PingReply reply = pingSender.Send ("www.contoso.com", 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);
    }
    else
    {
        Console.WriteLine (reply.Status);
    }
}

注解

如果在参数指定的 timeout 时间内未收到 ICMP 回显回复消息,则 ICMP 回显将失败,并且该 Status 属性设置为 TimedOut

注释

指定非常小的数字 timeout时,即使 timeout 已用毫秒,也可以接收 Ping 答复。

DontFragment如果该属性和true总数据包大小超过本地计算机和远程计算机之间路由节点可以传输的最大数据包大小,则 ICMP 回显请求将失败。 发生这种情况时,将 Status 设置为 PacketTooBig

使用该 Ttl 属性可以指定 ICMP 回显消息在到达其目标之前可以转发的最大次数。 如果数据包在转发指定的次数后未到达其目标,则会丢弃数据包,ICMP 回显请求将失败。 发生这种情况时,将 Status 设置为 TtlExpired

适用于

Send(IPAddress, TimeSpan, Byte[], PingOptions)

Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs

尝试将 Internet 控制消息协议(ICMP)回显消息发送到指定 IPAddress计算机,并从该计算机接收相应的 ICMP 回显回复消息。

public:
 System::Net::NetworkInformation::PingReply ^ Send(System::Net::IPAddress ^ address, TimeSpan timeout, cli::array <System::Byte> ^ buffer, System::Net::NetworkInformation::PingOptions ^ options);
public System.Net.NetworkInformation.PingReply Send(System.Net.IPAddress address, TimeSpan timeout, byte[]? buffer, System.Net.NetworkInformation.PingOptions? options);
member this.Send : System.Net.IPAddress * TimeSpan * byte[] * System.Net.NetworkInformation.PingOptions -> System.Net.NetworkInformation.PingReply
Public Function Send (address As IPAddress, timeout As TimeSpan, buffer As Byte(), options As PingOptions) As PingReply

参数

address
IPAddress

一个 IPAddress 标识作为 ICMP 回显消息目标的计算机。

timeout
TimeSpan

一个值,该值指定等待 ICMP 回显答复消息的最大时间量(发送回显消息后)。

buffer
Byte[]

一个 Byte 数组,其中包含要与 ICMP 回显消息一起发送并在 ICMP 回显回复消息中返回的数据。 该数组不能包含超过 65,500 个字节。

options
PingOptions

PingOptions用于控制 ICMP 回显消息数据包的碎片和生存时间值的对象。

返回

有关 ICMP 回显回复消息的信息(如果已收到消息)或失败原因(如果未收到任何消息)。

例外

addressbuffernull.

timeout 表示小于零毫秒或大于 MaxValue 毫秒的时间。

大小 buffer大于 65,500 字节。

正在调用 SendAsync。

发送或接收 ICMP 消息时引发了异常。 有关引发的确切异常,请参阅内部异常。

此对象已被释放。

适用于

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

Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs

尝试将具有指定数据缓冲区的 Internet 控制消息协议(ICMP)回显消息发送到具有指定 IPAddress 数据缓冲区的计算机,并从该计算机接收相应的 ICMP 回显回复消息。 通过此重载,可为 ICMP 回显消息数据包指定操作和控制碎片和控制分段和生存时间值。

public:
 System::Net::NetworkInformation::PingReply ^ Send(System::Net::IPAddress ^ address, int timeout, cli::array <System::Byte> ^ buffer, System::Net::NetworkInformation::PingOptions ^ options);
public System.Net.NetworkInformation.PingReply Send(System.Net.IPAddress address, int timeout, byte[] buffer, System.Net.NetworkInformation.PingOptions? options);
public System.Net.NetworkInformation.PingReply Send(System.Net.IPAddress address, int timeout, byte[] buffer, System.Net.NetworkInformation.PingOptions options);
member this.Send : System.Net.IPAddress * int * byte[] * System.Net.NetworkInformation.PingOptions -> System.Net.NetworkInformation.PingReply
Public Function Send (address As IPAddress, timeout As Integer, buffer As Byte(), options As PingOptions) As PingReply

参数

address
IPAddress

一个 IPAddress 标识作为 ICMP 回显消息目标的计算机。

timeout
Int32

一个 Int32 值,该值指定等待 ICMP 回显回复消息的最大毫秒数(发送回显消息后)。

buffer
Byte[]

一个 Byte 数组,其中包含要与 ICMP 回显消息一起发送并在 ICMP 回显回复消息中返回的数据。 该数组不能包含超过 65,500 个字节。

options
PingOptions

PingOptions用于控制 ICMP 回显消息数据包的碎片和生存时间值的对象。

返回

一个 PingReply 对象,该对象提供有关 ICMP 回显回复消息的信息(如果已收到消息)或提供失败原因(如果未收到消息)。 如果数据包超过最大传输单元(MTU),此方法将返回 PacketTooBig

例外

大小 buffer 超过 65500 字节。

addressbuffernull.

timeout 小于零。

调用 SendAsync 正在进行中。

发送或接收 ICMP 消息时引发了异常。 有关引发的确切异常,请参阅内部异常。

此对象已被释放。

仅限 Linux 上的 .NET 7 及更高版本:进程为非特权, buffer 不为空。

示例

下面的代码示例演示如何调用此方法。

public static void ComplexLocalPing ()
{
    // Ping's the local machine.
    Ping pingSender = new Ping ();
    IPAddress address = IPAddress.Loopback;

    // Create a buffer of 32 bytes of data to be transmitted.
    string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
    byte[] buffer = Encoding.ASCII.GetBytes (data);

    // Wait 10 seconds for a reply.
    int timeout = 10000;

    // 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);
    PingReply reply = pingSender.Send (address, 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);
    }
    else
    {
        Console.WriteLine (reply.Status);
    }
}

注解

如果在参数指定的 timeout 时间内未收到 ICMP 回显回复消息,则 ICMP 回显将失败,并且该 Status 属性设置为 TimedOut

注释

指定非常小的数字 timeout时,即使 timeout 已用毫秒,也可以接收 Ping 答复。

DontFragment如果该属性和true总数据包大小超过本地计算机和远程计算机之间路由节点可以传输的最大数据包大小,则 ICMP 回显请求将失败。 发生这种情况时,将 Status 设置为 PacketTooBig

使用该 Ttl 属性可以指定 ICMP 回显消息在到达其目标之前可以转发的最大次数。 如果数据包在转发指定的次数后未到达其目标,则会丢弃数据包,ICMP 回显请求将失败。 发生这种情况时,将 Status 设置为 TtlExpired

适用于

Send(String, Int32, Byte[])

Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs

尝试将具有指定数据缓冲区的 Internet 控制消息协议(ICMP)回显消息发送到指定计算机,并从该计算机接收相应的 ICMP 回显回复消息。 此重载允许指定操作的超时值。

public:
 System::Net::NetworkInformation::PingReply ^ Send(System::String ^ hostNameOrAddress, int timeout, cli::array <System::Byte> ^ buffer);
public System.Net.NetworkInformation.PingReply Send(string hostNameOrAddress, int timeout, byte[] buffer);
member this.Send : string * int * byte[] -> System.Net.NetworkInformation.PingReply
Public Function Send (hostNameOrAddress As String, timeout As Integer, buffer As Byte()) As PingReply

参数

hostNameOrAddress
String

一个 String 标识作为 ICMP 回显消息目标的计算机。 为此参数指定的值可以是主机名或 IP 地址的字符串表示形式。

timeout
Int32

一个 Int32 值,该值指定等待 ICMP 回显回复消息的最大毫秒数(发送回显消息后)。

buffer
Byte[]

一个 Byte 数组,其中包含要与 ICMP 回显消息一起发送并在 ICMP 回显回复消息中返回的数据。 该数组不能包含超过 65,500 个字节。

返回

一个 PingReply 对象,它提供有关 ICMP 回显答复消息(如果收到消息)的信息,或者提供失败的原因(如果未收到任何消息)。

例外

大小 buffer 超过 65500 字节。

hostNameOrAddressnull 或为空字符串(“)。

-或-

buffernull

timeout 小于零。

调用 SendAsync 正在进行中。

发送或接收 ICMP 消息时引发了异常。 有关引发的确切异常,请参阅内部异常。

此对象已被释放。

仅限 Linux 上的 .NET 7 及更高版本:进程为非特权, buffer 不为空。

示例

有关演示如何调用 Send 重载的示例,请参阅 Ping 类概述。

注解

如果在参数中指定的 timeout 时间内未收到 ICMP 回显回复消息,则 ICMP 回显将失败,并且该 Status 属性设置为 TimedOut

注释

指定非常小的数字 timeout时,即使 timeout 已用毫秒,也可以接收 Ping 答复。

此重载使用数据包碎片和数据包转发的默认设置。 如果数据包总大小超过本地计算机和远程计算机之间的路由节点之一可以传输的最大数据包大小,则包含 ICMP 回显消息的数据包可以分段传输。 若要防止碎片,请使用采用参数的方法之Send一,并将属性设置为 DontFragmenttrueoptionsDontFragment 数据包 true 总大小超过本地计算机和远程计算机之间路由节点可以传输的最大数据包大小时,ICMP 回显请求将失败。 发生这种情况时,将 Status 设置为 PacketTooBig

数据包或数据包片段可以通过路由节点 128 次转发,然后再被丢弃。 若要更改此设置,请使用采用Sendoptions参数的重载,并将Ttl属性设置为所需值。 如果数据包在转发指定的次数后未到达其目标,则会丢弃数据包,ICMP 回显请求将失败。 发生这种情况时,将 Status 设置为 TtlExpired

适用于

Send(IPAddress, Int32, Byte[])

Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs

尝试将具有指定数据缓冲区的 Internet 控制消息协议(ICMP)回显消息发送到具有指定 IPAddress数据缓冲区的计算机,并从该计算机接收相应的 ICMP 回显回复消息。 此重载允许指定操作的超时值。

public:
 System::Net::NetworkInformation::PingReply ^ Send(System::Net::IPAddress ^ address, int timeout, cli::array <System::Byte> ^ buffer);
public System.Net.NetworkInformation.PingReply Send(System.Net.IPAddress address, int timeout, byte[] buffer);
member this.Send : System.Net.IPAddress * int * byte[] -> System.Net.NetworkInformation.PingReply
Public Function Send (address As IPAddress, timeout As Integer, buffer As Byte()) As PingReply

参数

address
IPAddress

一个 IPAddress 标识作为 ICMP 回显消息目标的计算机。

timeout
Int32

一个 Int32 值,该值指定等待 ICMP 回显回复消息的最大毫秒数(发送回显消息后)。

buffer
Byte[]

一个 Byte 数组,其中包含要与 ICMP 回显消息一起发送并在 ICMP 回显回复消息中返回的数据。 该数组不能包含超过 65,500 个字节。

返回

一个 PingReply 对象,该对象提供有关 ICMP 回显回复消息的信息(如果已收到消息)或提供失败原因(如果未收到消息)。 如果数据包超过最大传输单元(MTU),此方法将返回 PacketTooBig

例外

大小 buffer 超过 65500 字节。

addressbuffernull.

timeout 小于零。

调用 SendAsync 正在进行中。

发送或接收 ICMP 消息时引发了异常。 有关引发的确切异常,请参阅内部异常。

此对象已被释放。

仅限 Linux 上的 .NET 7 及更高版本:进程为非特权, buffer 不为空。

示例

下面的代码示例演示如何调用此方法。

public static void LocalPingTimeout ()
{
    // Ping's the local machine.
    Ping pingSender = new Ping ();
    IPAddress address = IPAddress.Loopback;

    // Create a buffer of 32 bytes of data to be transmitted.
    string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
    byte[] buffer = Encoding.ASCII.GetBytes (data);

    // Wait 10 seconds for a reply.
    int timeout = 10000;
    PingReply reply = pingSender.Send (address, timeout, buffer);

    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);
    }
    else
    {
        Console.WriteLine (reply.Status);
    }
}

注解

如果在参数中指定的 timeout 时间内未收到 ICMP 回显回复消息,则 ICMP 回显将失败,并且该 Status 属性设置为 TimedOut

注释

指定非常小的数字 timeout时,即使 timeout 已用毫秒,也可以接收 Ping 答复。

此重载使用数据包碎片和数据包转发的默认设置。 如果数据包总大小超过本地计算机和远程计算机之间的路由节点之一可以传输的最大数据包大小,则包含 ICMP 回显消息的数据包可以分段传输。 若要防止碎片,请使用采用参数的方法之Send一,并将属性设置为 DontFragmenttrueoptionsDontFragment 数据包 true 总大小超过本地计算机和远程计算机之间路由节点可以传输的最大数据包大小时,ICMP 回显请求将失败。 发生这种情况时,将 Status 设置为 PacketTooBig

数据包或数据包片段可以通过路由节点 128 次转发,然后再被丢弃。 若要更改此设置,请使用采用Sendoptions参数的重载,并将Ttl属性设置为所需值。 如果数据包在转发指定的次数后未到达其目标,则会丢弃数据包,ICMP 回显请求将失败。 发生这种情况时,将 Status 设置为 TtlExpired

适用于

Send(String, Int32)

Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs

尝试将 Internet 控制消息协议(ICMP)回显消息发送到指定计算机,并从该计算机接收相应的 ICMP 回显回复消息。 此方法允许指定操作的超时值。

public:
 System::Net::NetworkInformation::PingReply ^ Send(System::String ^ hostNameOrAddress, int timeout);
public System.Net.NetworkInformation.PingReply Send(string hostNameOrAddress, int timeout);
member this.Send : string * int -> System.Net.NetworkInformation.PingReply
Public Function Send (hostNameOrAddress As String, timeout As Integer) As PingReply

参数

hostNameOrAddress
String

一个 String 标识作为 ICMP 回显消息目标的计算机。 为此参数指定的值可以是主机名或 IP 地址的字符串表示形式。

timeout
Int32

一个 Int32 值,该值指定等待 ICMP 回显回复消息的最大毫秒数(发送回显消息后)。

返回

一个 PingReply 对象,它提供有关 ICMP 回显答复消息(如果收到消息)的信息,或者提供失败的原因(如果未收到任何消息)。

例外

hostNameOrAddressnull 或为空字符串(“)。

timeout 小于零。

调用 SendAsync 正在进行中。

发送或接收 ICMP 消息时引发了异常。 有关引发的确切异常,请参阅内部异常。

此对象已被释放。

示例

有关演示如何调用方法 Send 的示例,请参阅 Ping 类概述。

注解

如果在参数中指定的 timeout 时间内未收到 ICMP 回显回复消息,则 ICMP 回显将失败,并且该 Status 属性设置为 TimedOut

注释

指定非常小的数字 timeout时,即使 timeout 已用毫秒,也可以接收 Ping 答复。

此重载使用数据包碎片和数据包转发的默认设置。 如果数据包总大小超过本地计算机和远程计算机之间的路由节点之一可以传输的最大数据包大小,则包含 ICMP 回显消息的数据包可以分段传输。 若要防止碎片,请使用采用参数的方法之Send一,并将属性设置为 DontFragmenttrueoptionsDontFragment 数据包 true 总大小超过本地计算机和远程计算机之间路由节点可以传输的最大数据包大小时,ICMP 回显请求将失败。 发生这种情况时,将 Status 设置为 PacketTooBig。 数据包或数据包片段(如果已分段)可以通过路由节点转发 128 次,然后再被丢弃。 若要更改此设置,请使用采用Sendoptions参数的重载,并将Ttl属性设置为所需值。 如果数据包在转发指定的次数后未到达其目标,则会丢弃数据包,ICMP 回显请求将失败。 发生这种情况时,将 Status 设置为 TtlExpired

适用于

Send(IPAddress, Int32)

Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs

尝试将具有指定数据缓冲区的 Internet 控制消息协议(ICMP)回显消息发送到具有指定 IPAddress数据缓冲区的计算机,并从该计算机接收相应的 ICMP 回显回复消息。 此方法允许指定操作的超时值。

public:
 System::Net::NetworkInformation::PingReply ^ Send(System::Net::IPAddress ^ address, int timeout);
public System.Net.NetworkInformation.PingReply Send(System.Net.IPAddress address, int timeout);
member this.Send : System.Net.IPAddress * int -> System.Net.NetworkInformation.PingReply
Public Function Send (address As IPAddress, timeout As Integer) As PingReply

参数

address
IPAddress

一个 IPAddress 标识作为 ICMP 回显消息目标的计算机。

timeout
Int32

一个 Int32 值,该值指定等待 ICMP 回显回复消息的最大毫秒数(发送回显消息后)。

返回

一个 PingReply 对象,它提供有关 ICMP 回显答复消息(如果收到消息)的信息,或者提供失败的原因(如果未收到任何消息)。

例外

addressnull

timeout 小于零。

调用 SendAsync 正在进行中。

发送或接收 ICMP 消息时引发了异常。 有关引发的确切异常,请参阅内部异常。

此对象已被释放。

示例

有关演示如何调用方法 Send 的示例,请参阅 Ping 类概述。

注解

如果在参数中指定的 timeout 时间内未收到 ICMP 回显回复消息,则 ICMP 回显将失败,并且该 Status 属性设置为 TimedOut

注释

指定非常小的数字 timeout时,即使 timeout 已用毫秒,也可以接收 Ping 答复。

此重载使用数据包碎片和数据包转发的默认设置。 如果数据包总大小超过本地计算机和远程计算机之间的路由节点之一可以传输的最大数据包大小,则包含 ICMP 回显消息的数据包可以分段传输。 若要防止碎片,请使用采用参数的方法之Send一,并将属性设置为 DontFragmenttrueoptionsDontFragment 数据包 true 总大小超过本地计算机和远程计算机之间路由节点可以传输的最大数据包大小时,ICMP 回显请求将失败。 发生这种情况时,将 Status 设置为 PacketTooBig

数据包或数据包片段可以通过路由节点 128 次转发,然后再被丢弃。 若要更改此设置,请使用采用Sendoptions参数的重载,并将Ttl属性设置为所需值。 如果数据包在转发指定的次数后未到达其目标,则会丢弃数据包,ICMP 回显请求将失败。 发生这种情况时,将 Status 设置为 TtlExpired

适用于

Send(String)

Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs

尝试将 Internet 控制消息协议(ICMP)回显消息发送到指定计算机,并从该计算机接收相应的 ICMP 回显回复消息。

public:
 System::Net::NetworkInformation::PingReply ^ Send(System::String ^ hostNameOrAddress);
public System.Net.NetworkInformation.PingReply Send(string hostNameOrAddress);
member this.Send : string -> System.Net.NetworkInformation.PingReply
Public Function Send (hostNameOrAddress As String) As PingReply

参数

hostNameOrAddress
String

一个 String 标识作为 ICMP 回显消息目标的计算机。 为此参数指定的值可以是主机名或 IP 地址的字符串表示形式。

返回

一个 PingReply 对象,该对象提供有关 ICMP 回显回复消息的信息(如果已收到消息)或提供失败原因(如果未收到消息)。

例外

hostNameOrAddressnull 或为空字符串(“)。

调用 SendAsync 正在进行中。

发送或接收 ICMP 消息时引发了异常。 有关引发的确切异常,请参阅内部异常。

此对象已被释放。

示例

下面的代码示例演示如何调用此方法。

public static void SimplePing ()
{
    Ping pingSender = new Ping ();
    PingReply reply = pingSender.Send ("www.contoso.com");

    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);
    }
    else
    {
        Console.WriteLine (reply.Status);
    }
}

注解

此方法使用 ICMP 回显消息发送 32 Byte 个数据缓冲区。 该方法等待 ICMP 回显回复消息 5 秒。 如果该方法在该时间未收到答复,该方法将返回,并且属性 Status 设置为 TimedOut

此重载使用数据包碎片和数据包转发的默认设置。 如果数据包总大小超过本地计算机和远程计算机之间的路由节点之一可以传输的最大数据包大小,则包含 ICMP 回显消息的数据包可以分段传输。 若要防止碎片,请使用采用参数的方法之Send一,并将属性设置为 DontFragmenttrueoptionsDontFragment 数据包 true 总大小超过本地计算机和远程计算机之间路由节点可以传输的最大数据包大小时,ICMP 回显请求将失败。 发生这种情况时,将 Status 设置为 PacketTooBig。 数据包或数据包片段(如果已分段)可以通过路由节点转发 128 次,然后再被丢弃。 若要更改此设置,请使用采用Sendoptions参数的重载,并将Ttl属性设置为所需值。 如果数据包在转发指定的次数后未到达其目标,则会丢弃数据包,ICMP 回显请求将失败。 发生这种情况时,将 Status 设置为 TtlExpired

适用于

Send(IPAddress)

Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs
Source:
Ping.cs

尝试将 Internet 控制消息协议(ICMP)回显消息发送到指定 IPAddress计算机,并从该计算机接收相应的 ICMP 回显回复消息。

public:
 System::Net::NetworkInformation::PingReply ^ Send(System::Net::IPAddress ^ address);
public System.Net.NetworkInformation.PingReply Send(System.Net.IPAddress address);
member this.Send : System.Net.IPAddress -> System.Net.NetworkInformation.PingReply
Public Function Send (address As IPAddress) As PingReply

参数

address
IPAddress

一个 IPAddress 标识作为 ICMP 回显消息目标的计算机。

返回

一个 PingReply 对象,该对象提供有关 ICMP 回显回复消息的信息(如果收到消息)或描述未收到消息时失败的原因。

例外

addressnull

调用 SendAsync 正在进行中。

发送或接收 ICMP 消息时引发了异常。 有关引发的确切异常,请参阅内部异常。

此对象已被释放。

示例

下面的代码示例演示如何调用此方法。

public static void LocalPing ()
{
    // Ping's the local machine.
    Ping pingSender = new Ping ();
    IPAddress address = IPAddress.Loopback;
    PingReply reply = pingSender.Send (address);

    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);
    }
    else
    {
        Console.WriteLine (reply.Status);
    }
}

注解

此方法使用 ICMP 回显消息发送到由 32 Byte 个数据缓冲区指定的address主机。 该方法等待 ICMP 回显回复消息 5 秒。 如果该方法在该时间未收到答复,该方法将返回,并且属性 Status 设置为 TimedOut

此重载使用数据包碎片和数据包转发的默认设置。 如果数据包总大小超过本地计算机和远程计算机之间的路由节点之一可以传输的最大数据包大小,则包含 ICMP 回显消息的数据包可以分段传输。 若要防止碎片,请使用采用参数的方法之Send一,并将属性设置为 DontFragmenttrueoptionsDontFragment 数据包 true 总大小超过本地计算机和远程计算机之间路由节点可以传输的最大数据包大小时,ICMP 回显请求将失败。 发生这种情况时,将 Status 设置为 PacketTooBig。 数据包或数据包片段(如果已分段)可以通过路由节点转发 128 次,然后再被丢弃。 若要更改此设置,请使用采用Sendoptions参数的重载,并将Ttl属性设置为所需值。 如果数据包在转发指定的次数后未到达其目标,则会丢弃数据包,ICMP 回显请求将失败。 发生这种情况时,将 Status 设置为 TtlExpired

适用于