語言

Ping.Send 方法

定義

嘗試將因特網控制訊息通訊協定 (ICMP) 回應訊息傳送至遠端電腦,並從遠端電腦接收對應的 ICMP 回應回覆訊息。

多載

名稱 Description
Send(String, TimeSpan, Byte[], PingOptions)

嘗試將因特網控制訊息通訊協定 (ICMP) 回應訊息傳送至指定的電腦,以及從該電腦接收對應的 ICMP 回應回覆訊息。

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

嘗試將具有指定數據緩衝區的因特網控制訊息通訊協定 (ICMP) 回應訊息傳送至指定的計算機,並從該電腦接收對應的 ICMP 回應回覆訊息。 此過載允許你指定操作與控制碎片的逾時值,以及 ICMP 封包的存活時間值。

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

嘗試將因特網控制訊息通訊協定 (ICMP) 回應訊息傳送給具有指定 IPAddress的計算機,並從該電腦接收對應的 ICMP 回應回覆訊息。

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

嘗試將具有指定數據緩衝區的因特網控制訊息通訊協定 (ICMP) 回應訊息傳送至具有指定 IPAddress 的電腦,並從該電腦接收對應的 ICMP 回應回覆訊息。 此過載允許你指定操作與控制碎片的逾時值,以及 ICMP 回聲訊息封包的存活時間值。

Send(String, Int32, Byte[])

嘗試將具有指定數據緩衝區的因特網控制訊息通訊協定 (ICMP) 回應訊息傳送至指定的計算機,並從該電腦接收對應的 ICMP 回應回覆訊息。 這個超載讓你可以為操作指定逾時值。

Send(IPAddress, Int32, Byte[])

嘗試將具有指定數據緩衝區的因特網控制訊息通訊協定 (ICMP) 回應訊息傳送至具有指定 IPAddress的電腦,並從該電腦接收對應的 ICMP 回應回覆訊息。 這個超載讓你可以為操作指定逾時值。

Send(String, Int32)

嘗試將因特網控制訊息通訊協定 (ICMP) 回應訊息傳送至指定的計算機,並從該電腦接收對應的 ICMP 回應回覆訊息。 這個方法可讓您指定作業的逾時值。

Send(IPAddress, Int32)

嘗試將具有指定數據緩衝區的因特網控制訊息通訊協定 (ICMP) 回應訊息傳送至具有指定 IPAddress的電腦,並從該電腦接收對應的 ICMP 回應回覆訊息。 這個方法可讓您指定作業的逾時值。

Send(String)

嘗試將因特網控制訊息通訊協定 (ICMP) 回應訊息傳送至指定的計算機,並從該電腦接收對應的 ICMP 回應回覆訊息。

Send(IPAddress)

嘗試將因特網控制訊息通訊協定 (ICMP) 回應訊息傳送給具有指定 IPAddress的計算機,並從該電腦接收對應的 ICMP 回應回覆訊息。

備註

任何 Send 多載傳回的IP位址都可能來自惡意遠端電腦。 請勿用此連接遠端電腦。 使用 DNS 來確定你想連接的機器的 IP 位址。

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

來源:
Ping.cs
來源:
Ping.cs
來源:
Ping.cs
來源:
Ping.cs
來源:
Ping.cs

嘗試將因特網控制訊息通訊協定 (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

A String 用來識別 ICMP 迴波訊息目的地的電腦。 此參數的值可以是主機名稱或 IP 位址的字串表示。

timeout
TimeSpan

值,指定等候ICMP回應回覆訊息的時間上限(傳送回顯訊息之後)。

buffer
Byte[]

一個 Byte 陣列,包含要隨 ICMP 回波訊息傳送並在 ICMP 回聲回覆訊息中回傳的資料。 陣列容量不得超過 65,500 位元組。

options
PingOptions

一個 PingOptions 用於控制 ICMP 回聲訊息封包碎片化及存活時間值的物件。

傳回

如果收到ICMP回應回覆訊息的相關信息,或未收到任何訊息,則為失敗原因。

例外狀況

buffer 或 hostNameOrAddress 是空字串 null 或 hostNameOrAddress 為空字串串(“)。

timeout 代表小於零毫秒或大於 MaxValue 毫秒的時間。

buffer的大小大於65,500個字節。

SendAsync 的呼叫正在進行中。

在發送或接收 ICMP 訊息時會拋出例外。 請參見內部例外,了解被拋出的具體例外。

此物已被處理。

適用於

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

來源:
Ping.cs
來源:
Ping.cs
來源:
Ping.cs
來源:
Ping.cs
來源:
Ping.cs

嘗試將具有指定數據緩衝區的因特網控制訊息通訊協定 (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

A String 用來識別 ICMP 迴波訊息目的地的電腦。 此參數的值可以是主機名稱或 IP 位址的字串表示。

timeout
Int32

一個 Int32 指定在發送回聲訊息後等待 ICMP 回波回覆訊息的最大毫秒數的值。

buffer
Byte[]

一個 Byte 陣列,包含要隨 ICMP 回波訊息傳送並在 ICMP 回聲回覆訊息中回傳的資料。 陣列容量不得超過 65,500 位元組。

options
PingOptions

一個 PingOptions 用於控制 ICMP 回聲訊息封包碎片化及存活時間值的物件。

傳回

PingReply 物件,提供收到ICMP回應回覆訊息的相關信息,或提供未收到任何訊息時失敗的原因。

例外狀況

其大小 buffer 超過 65500 位元組。

hostNameOrAddress 是 null 或為零長度字串。

-或-

buffer 是 null。

timeout 小於零。

正在進行呼叫 SendAsync 。

在發送或接收 ICMP 訊息時會拋出例外。 請參見內部例外,了解被拋出的具體例外。

此物已被處理。

.NET 7 及更新版本僅適用於 Linux:該程序非特權,且 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);
    }
}

備註

若 ICMP 回波回應訊息未在參數指定 timeout 時間內收到,則 ICMP 回波失敗,屬性 Status 設 TimedOut為 。

Note

當指定非常小的數值時 timeout,即使 timeout 已過毫秒,也能收到 Ping 回應。

若 DontFragment 性質為 且 true 總封包大小超過路由節點在本地與遠端電腦間可傳送的最大封包大小,則 ICMP 回波請求失敗。 當發生這種情況時,將 Status 設為 PacketTooBig。

利用屬性 Ttl 指定 ICMP 回聲訊息在抵達目的地前最多可轉發的次數。 若封包在指定轉發次數後仍未抵達目的地,封包將被丟棄,ICMP 回聲請求即告失敗。 當發生這種情況時,將 Status 設為 TtlExpired。

適用於

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

來源:
Ping.cs
來源:
Ping.cs
來源:
Ping.cs
來源:
Ping.cs
來源:
Ping.cs

嘗試將因特網控制訊息通訊協定 (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回應回覆訊息的相關信息,或未收到任何訊息,則為失敗原因。

例外狀況

address 或 buffer 為 null。

timeout 代表小於零毫秒或大於 MaxValue 毫秒的時間。

buffer的大小大於65,500個字節。

SendAsync 的呼叫正在進行中。

在發送或接收 ICMP 訊息時會拋出例外。 請參見內部例外,了解被拋出的具體例外。

此物已被處理。

適用於

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

來源:
Ping.cs
來源:
Ping.cs
來源:
Ping.cs
來源:
Ping.cs
來源:
Ping.cs

嘗試將具有指定數據緩衝區的因特網控制訊息通訊協定 (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 位元組。

address 或 buffer 為 null。

timeout 小於零。

正在進行呼叫 SendAsync 。

在發送或接收 ICMP 訊息時會拋出例外。 請參見內部例外,了解被拋出的具體例外。

此物已被處理。

.NET 7 及更新版本僅適用於 Linux:該程序非特權,且 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);
    }
}

備註

若 ICMP 回波回應訊息未在參數指定 timeout 時間內收到,則 ICMP 回波失敗,屬性 Status 設 TimedOut為 。

Note

當指定非常小的數值時 timeout,即使 timeout 已過毫秒,也能收到 Ping 回應。

若 DontFragment 性質為 且 true 總封包大小超過路由節點在本地與遠端電腦間可傳送的最大封包大小,則 ICMP 回波請求失敗。 當發生這種情況時,將 Status 設為 PacketTooBig。

利用屬性 Ttl 指定 ICMP 回聲訊息在抵達目的地前最多可轉發的次數。 若封包在指定轉發次數後仍未抵達目的地,封包將被丟棄,ICMP 回聲請求即告失敗。 當發生這種情況時,將 Status 設為 TtlExpired。

適用於

Send(String, Int32, Byte[])

來源:
Ping.cs
來源:
Ping.cs
來源:
Ping.cs
來源:
Ping.cs
來源:
Ping.cs

嘗試將具有指定數據緩衝區的因特網控制訊息通訊協定 (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

A String 用來識別 ICMP 迴波訊息目的地的電腦。 此參數的值可以是主機名稱或 IP 位址的字串表示。

timeout
Int32

一個 Int32 指定在發送回聲訊息後等待 ICMP 回波回覆訊息的最大毫秒數的值。

buffer
Byte[]

一個 Byte 陣列,包含要隨 ICMP 回波訊息傳送並在 ICMP 回聲回覆訊息中回傳的資料。 陣列容量不得超過 65,500 位元組。

傳回

PingReply 物件,提供收到ICMP回應回覆訊息的相關信息,或提供未收到任何訊息時失敗的原因。

例外狀況

其大小 buffer 超過 65500 位元組。

hostNameOrAddress 是 null 或是空字串(“”)。

-或-

buffer 是 null。

timeout 小於零。

正在進行呼叫 SendAsync 。

在發送或接收 ICMP 訊息時會拋出例外。 請參見內部例外,了解被拋出的具體例外。

此物已被處理。

.NET 7 及更新版本僅適用於 Linux:該程序非特權,且 buffer 非空的。

範例

如需示範如何呼叫 Send 多載的範例,請參閱 Ping 類別概觀。

備註

如果未在 timeout 參數中指定的時間內收到 ICMP 回應回覆訊息,ICMP 回應會失敗,而且 Status 屬性會設定為 TimedOut。

Note

當指定非常小的數值時 timeout,即使 timeout 已過毫秒,也能收到 Ping 回應。

此過載使用封包碎片與封包轉發的預設設定。 若包含 ICMP 回聲訊息的封包總大小超過本地與遠端電腦間路由節點可傳送的最大封包大小,則該封包可在傳輸過程中被分割。 為防止碎片化,請使用 Send 取 options 參數的方法之一,並將屬性設 DontFragment 為 true。 當 DontFragment 且 true 總封包大小超過本地與遠端電腦間路由節點可傳送的最大封包大小時,ICMP 回波請求失敗。 當發生這種情況時,將 Status 設為 PacketTooBig。

封包或封包片段可由路由節點轉發 128 次後被丟棄。 要更改此設定,使用 Send 一個超載,該參數將 options 屬性設 Ttl 為所需值。 若封包在指定轉發次數後仍未抵達目的地,封包將被丟棄,ICMP 回聲請求即告失敗。 當發生這種情況時,將 Status 設為 TtlExpired。

適用於

Send(IPAddress, Int32, Byte[])

來源:
Ping.cs
來源:
Ping.cs
來源:
Ping.cs
來源:
Ping.cs
來源:
Ping.cs

嘗試將具有指定數據緩衝區的因特網控制訊息通訊協定 (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 位元組。

address 或 buffer 為 null。

timeout 小於零。

正在進行呼叫 SendAsync 。

在發送或接收 ICMP 訊息時會拋出例外。 請參見內部例外,了解被拋出的具體例外。

此物已被處理。

.NET 7 及更新版本僅適用於 Linux:該程序非特權,且 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。

Note

當指定非常小的數值時 timeout,即使 timeout 已過毫秒,也能收到 Ping 回應。

此過載使用封包碎片與封包轉發的預設設定。 若包含 ICMP 回聲訊息的封包總大小超過本地與遠端電腦間路由節點可傳送的最大封包大小,則該封包可在傳輸過程中被分割。 為防止碎片化,請使用 Send 取 options 參數的方法之一,並將屬性設 DontFragment 為 true。 當 DontFragment 且 true 總封包大小超過本地與遠端電腦間路由節點可傳送的最大封包大小時,ICMP 回波請求失敗。 當發生這種情況時,將 Status 設為 PacketTooBig。

封包或封包片段可由路由節點轉發 128 次後被丟棄。 要更改此設定,使用 Send 一個超載,該參數將 options 屬性設 Ttl 為所需值。 若封包在指定轉發次數後仍未抵達目的地,封包將被丟棄,ICMP 回聲請求即告失敗。 當發生這種情況時,將 Status 設為 TtlExpired。

適用於

Send(String, Int32)

來源:
Ping.cs
來源:
Ping.cs
來源:
Ping.cs
來源:
Ping.cs
來源:
Ping.cs

嘗試將因特網控制訊息通訊協定 (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

A String 用來識別 ICMP 迴波訊息目的地的電腦。 此參數的值可以是主機名稱或 IP 位址的字串表示。

timeout
Int32

一個 Int32 指定在發送回聲訊息後等待 ICMP 回波回覆訊息的最大毫秒數的值。

傳回

PingReply 物件,提供收到ICMP回應回覆訊息的相關信息,或提供未收到任何訊息時失敗的原因。

例外狀況

hostNameOrAddress 是 null 或是空字串(“”)。

timeout 小於零。

正在進行呼叫 SendAsync 。

在發送或接收 ICMP 訊息時會拋出例外。 請參見內部例外,了解被拋出的具體例外。

此物已被處理。

範例

如需示範呼叫 Send 方法的範例,請參閱 Ping 類別概觀。

備註

如果未在 timeout 參數中指定的時間內收到 ICMP 回應回覆訊息,ICMP 回應會失敗,而且 Status 屬性會設定為 TimedOut。

Note

當指定非常小的數值時 timeout,即使 timeout 已過毫秒,也能收到 Ping 回應。

此過載使用封包碎片與封包轉發的預設設定。 若包含 ICMP 回聲訊息的封包總大小超過本地與遠端電腦間路由節點可傳送的最大封包大小,則該封包可在傳輸過程中被分割。 為防止碎片化,請使用 Send 取 options 參數的方法之一,並將屬性設 DontFragment 為 true。 當 DontFragment 且 true 總封包大小超過本地與遠端電腦間路由節點可傳送的最大封包大小時,ICMP 回波請求失敗。 當發生這種情況時,將 Status 設為 PacketTooBig。 封包或封包片段(若已分段)可由路由節點轉發 128 次後再丟棄。 要更改此設定,使用 Send 一個超載,該參數將 options 屬性設 Ttl 為所需值。 若封包在指定轉發次數後仍未抵達目的地,封包將被丟棄,ICMP 回聲請求即告失敗。 當發生這種情況時,將 Status 設為 TtlExpired。

適用於

Send(IPAddress, Int32)

來源:
Ping.cs
來源:
Ping.cs
來源:
Ping.cs
來源:
Ping.cs
來源:
Ping.cs

嘗試將具有指定數據緩衝區的因特網控制訊息通訊協定 (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回應回覆訊息的相關信息,或提供未收到任何訊息時失敗的原因。

例外狀況

address 是 null。

timeout 小於零。

正在進行呼叫 SendAsync 。

在發送或接收 ICMP 訊息時會拋出例外。 請參見內部例外,了解被拋出的具體例外。

此物已被處理。

範例

如需示範呼叫 Send 方法的範例,請參閱 Ping 類別概觀。

備註

如果未在 timeout 參數中指定的時間內收到 ICMP 回應回覆訊息,ICMP 回應會失敗,而且 Status 屬性會設定為 TimedOut。

Note

當指定非常小的數值時 timeout,即使 timeout 已過毫秒,也能收到 Ping 回應。

此過載使用封包碎片與封包轉發的預設設定。 若包含 ICMP 回聲訊息的封包總大小超過本地與遠端電腦間路由節點可傳送的最大封包大小,則該封包可在傳輸過程中被分割。 為防止碎片化,請使用 Send 取 options 參數的方法之一,並將屬性設 DontFragment 為 true。 當 DontFragment 且 true 總封包大小超過本地與遠端電腦間路由節點可傳送的最大封包大小時,ICMP 回波請求失敗。 當發生這種情況時,將 Status 設為 PacketTooBig。

封包或封包片段可由路由節點轉發 128 次後被丟棄。 要更改此設定,使用 Send 一個超載,該參數將 options 屬性設 Ttl 為所需值。 若封包在指定轉發次數後仍未抵達目的地,封包將被丟棄,ICMP 回聲請求即告失敗。 當發生這種情況時,將 Status 設為 TtlExpired。

適用於

Send(String)

來源:
Ping.cs
來源:
Ping.cs
來源:
Ping.cs
來源:
Ping.cs
來源:
Ping.cs

嘗試將因特網控制訊息通訊協定 (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

A String 用來識別 ICMP 迴波訊息目的地的電腦。 此參數的值可以是主機名稱或 IP 位址的字串表示。

傳回

PingReply 物件,提供ICMP回應回覆訊息的相關信息、如果已收到訊息,或提供失敗的原因,則為未收到任何訊息。

例外狀況

hostNameOrAddress 是 null 或是空字串(“”)。

正在進行呼叫 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);
    }
}

備註

此方法會傳送一個 32 Byte 的資料緩衝區,並傳送 ICMP 回聲訊息。 該方法等待五秒鐘,等待 ICMP 回波回覆訊息。 若在此期間未收到回覆,方法會回傳,並將 Status 屬性設為 TimedOut。

此過載使用封包碎片與封包轉發的預設設定。 若包含 ICMP 回聲訊息的封包總大小超過本地與遠端電腦間路由節點可傳送的最大封包大小,則該封包可在傳輸過程中被分割。 為防止碎片化,請使用 Send 取 options 參數的方法之一,並將屬性設 DontFragment 為 true。 當 DontFragment 且 true 總封包大小超過本地與遠端電腦間路由節點可傳送的最大封包大小時,ICMP 回波請求失敗。 當發生這種情況時,將 Status 設為 PacketTooBig。 封包或封包片段(若已分段)可由路由節點轉發 128 次後再丟棄。 要更改此設定,使用 Send 一個超載,該參數將 options 屬性設 Ttl 為所需值。 若封包在指定轉發次數後仍未抵達目的地,封包將被丟棄,ICMP 回聲請求即告失敗。 當發生這種情況時,將 Status 設為 TtlExpired。

適用於

Send(IPAddress)

來源:
Ping.cs
來源:
Ping.cs
來源:
Ping.cs
來源:
Ping.cs
來源:
Ping.cs

嘗試將因特網控制訊息通訊協定 (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回應回覆訊息的相關信息、如果已收到訊息,或描述未收到任何訊息時失敗的原因。

例外狀況

address 是 null。

正在進行呼叫 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 address 數據緩衝區所指定的主機 Byte。 該方法等待五秒鐘,等待 ICMP 回波回覆訊息。 若在此期間未收到回覆,方法會回傳,並將 Status 屬性設為 TimedOut。

此過載使用封包碎片與封包轉發的預設設定。 若包含 ICMP 回聲訊息的封包總大小超過本地與遠端電腦間路由節點可傳送的最大封包大小,則該封包可在傳輸過程中被分割。 為防止碎片化,請使用 Send 取 options 參數的方法之一,並將屬性設 DontFragment 為 true。 當 DontFragment 且 true 總封包大小超過本地與遠端電腦間路由節點可傳送的最大封包大小時,ICMP 回波請求失敗。 當發生這種情況時,將 Status 設為 PacketTooBig。 封包或封包片段(若已分段)可由路由節點轉發 128 次後再丟棄。 要更改此設定,使用 Send 一個超載,該參數將 options 屬性設 Ttl 為所需值。 若封包在指定轉發次數後仍未抵達目的地,封包將被丟棄,ICMP 回聲請求即告失敗。 當發生這種情況時,將 Status 設為 TtlExpired。

適用於