Ping.Send 方法

定義

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

多載

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

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

例外狀況

buffer或為 nullhostNameOrAddresshostNameOrAddress 為空字串 (“”) 。

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

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

SendAsync 的呼叫正在進行中。

傳送或接收 ICMP 訊息時發生例外狀況。 查看被擲回之例外狀況的內部真正例外狀況。

這個物件已經過處置。

適用於

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

來源:
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

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 小於零。

傳送或接收 ICMP 訊息時發生例外狀況。 查看被擲回之例外狀況的內部真正例外狀況。

這個物件已經過處置。

僅限 Linux 上的 .NET 7 和更新版本:此程式為非特殊許可權,且 buffer 不是空的。

範例

下列程式代碼範例示範如何呼叫這個方法。

void ComplexPing()
{
   Ping ^ pingSender = gcnew Ping;
   
   // Create a buffer of 32 bytes of data to be transmitted.
   String^ data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
   array<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 = gcnew 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 );
   }
}
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)

來源:
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回應回覆訊息的相關信息,或未收到任何訊息,則為失敗的原因。

例外狀況

addressbuffernull

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

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

SendAsync 的呼叫正在進行中。

傳送或接收 ICMP 訊息時發生例外狀況。 查看被擲回之例外狀況的內部真正例外狀況。

這個物件已經過處置。

適用於

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

來源:
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 個位元組。

addressbuffernull

timeout 小於零。

傳送或接收 ICMP 訊息時發生例外狀況。 查看被擲回之例外狀況的內部真正例外狀況。

這個物件已經過處置。

僅限 Linux 上的 .NET 7 和更新版本:此程式為非特殊許可權,且 buffer 不是空的。

範例

下列程式代碼範例示範如何呼叫這個方法。

void ComplexLocalPing()
{
   
   // Ping's the local machine.
   Ping ^ pingSender = gcnew Ping;
   IPAddress^ address = IPAddress::Loopback;
   
   // Create a buffer of 32 bytes of data to be transmitted.
   String^ data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
   array<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 = gcnew 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 );
   }
}
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[])

來源:
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

String,識別 ICMP 回應訊息的目標電腦。 指定給這個參數的值可以是主機名稱或 IP 位址的字串表示。

timeout
Int32

Int32 值,指定等候 ICMP 回應回覆訊息的最大毫秒數 (在傳送回應訊息之後)。 

buffer
Byte[]

Byte 陣列,包含要與 ICMP 回應訊息一同傳送以及要在 ICMP 回應回覆訊息中傳回的資料。 陣列的位元組不可以超過 65,500 以上。

傳回

PingReply 物件,如果收到 ICMP 回應的回覆訊息,則提供相關資訊,如果未收到訊息則提供失敗的原因。

例外狀況

buffer 的大小超過 65500 個位元組。

hostNameOrAddressnull 或空字串 ("")。

-或-

buffernull

timeout 小於零。

傳送或接收 ICMP 訊息時發生例外狀況。 查看被擲回之例外狀況的內部真正例外狀況。

這個物件已經過處置。

僅限 Linux 上的 .NET 7 和更新版本:此程式為非特殊許可權,且 buffer 不是空的。

範例

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

備註

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

注意

針對 指定非常小的數位 timeout時,即使經過毫秒,仍可接收 timeout Ping 回復。

此多載會使用封包片段和封包轉送的預設設定。 如果封包大小總計超過本機和遠端計算機之間其中一個路由節點可傳輸的封包大小上限,則包含ICMP回應訊息的封包可以分散傳輸。 若要防止片段,請使用採用 參數的 Send 其中一種方法 options ,並將 屬性設定 DontFragmenttrue。 當 是 DontFragmenttrue 且封包大小總計超過本機和遠端計算機之間其中一個路由節點可傳輸的封包大小上限時,ICMP 回應要求會失敗。 發生這種情況時,會將 Status 設定為 PacketTooBig

封包或封包片段可以透過路由節點 128 次轉送,再被捨棄。 若要變更此設定,請使用 Send 採用 options 參數的多載,並將 屬性設定 Ttl 為所需的值。 如果封包在轉送指定的次數之後未到達其目的地,則會捨棄封包,而且ICMP回應要求會失敗。 發生這種情況時,會將 Status 設定為 TtlExpired

適用於

Send(IPAddress, Int32, Byte[])

來源:
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 個位元組。

addressbuffernull

timeout 小於零。

傳送或接收 ICMP 訊息時發生例外狀況。 查看被擲回之例外狀況的內部真正例外狀況。

這個物件已經過處置。

僅限 Linux 上的 .NET 7 和更新版本:此程式為非特殊許可權,且 buffer 不是空的。

範例

下列程式代碼範例示範如何呼叫這個方法。

void LocalPingTimeout()
{
   
   // Ping's the local machine.
   Ping ^ pingSender = gcnew Ping;
   IPAddress^ address = IPAddress::Loopback;
   
   // Create a buffer of 32 bytes of data to be transmitted.
   String^ data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
   array<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 );
   }
}
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 其中一種方法 options ,並將 屬性設定 DontFragmenttrue。 當 是 DontFragmenttrue 且封包大小總計超過本機和遠端計算機之間其中一個路由節點可傳輸的封包大小上限時,ICMP 回應要求會失敗。 發生這種情況時,會將 Status 設定為 PacketTooBig

封包或封包片段可以透過路由節點 128 次轉送,再被捨棄。 若要變更此設定,請使用 Send 採用 options 參數的多載,並將 屬性設定 Ttl 為所需的值。 如果封包在轉送指定的次數之後未到達其目的地,則會捨棄封包,而且ICMP回應要求會失敗。 發生這種情況時,會將 Status 設定為 TtlExpired

適用於

Send(String, Int32)

來源:
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

String,識別 ICMP 回應訊息的目標電腦。 指定給這個參數的值可以是主機名稱或 IP 位址的字串表示。

timeout
Int32

Int32 值,指定等候 ICMP 回應回覆訊息的最大毫秒數 (在傳送回應訊息之後)。 

傳回

PingReply 物件,如果收到 ICMP 回應的回覆訊息,則提供相關資訊,如果未收到訊息則提供失敗的原因。

例外狀況

hostNameOrAddressnull 或空字串 ("")。

timeout 小於零。

傳送或接收 ICMP 訊息時發生例外狀況。 查看被擲回之例外狀況的內部真正例外狀況。

這個物件已經過處置。

範例

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

備註

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

注意

針對 指定非常小的數位 timeout時,即使經過毫秒,仍可接收 timeout Ping 回復。

此多載會使用封包片段和封包轉送的預設設定。 如果封包大小總計超過本機和遠端計算機之間其中一個路由節點可傳輸的封包大小上限,則包含ICMP回應訊息的封包可以分散傳輸。 若要防止片段,請使用採用 參數的 Send 其中一種方法 options ,並將 屬性設定 DontFragmenttrue。 當 是 DontFragmenttrue 且封包大小總計超過本機和遠端計算機之間其中一個路由節點可傳輸的封包大小上限時,ICMP 回應要求會失敗。 發生這種情況時,會將 Status 設定為 PacketTooBig。 如果路由節點可以在捨棄之前 128 次轉送分散) ,封包或封包片段 (。 若要變更此設定,請使用 Send 採用 options 參數的多載,並將 屬性設定 Ttl 為所需的值。 如果封包在轉送指定的次數之後未到達其目的地,則會捨棄封包,而且ICMP回應要求會失敗。 發生這種情況時,會將 Status 設定為 TtlExpired

適用於

Send(IPAddress, Int32)

來源:
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 回應的回覆訊息,則提供相關資訊,如果未收到訊息則提供失敗的原因。

例外狀況

addressnull

timeout 小於零。

傳送或接收 ICMP 訊息時發生例外狀況。 查看被擲回之例外狀況的內部真正例外狀況。

這個物件已經過處置。

範例

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

備註

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

注意

針對 指定非常小的數位 timeout時,即使經過毫秒,仍可接收 timeout Ping 回復。

此多載會使用封包片段和封包轉送的預設設定。 如果封包大小總計超過本機和遠端計算機之間其中一個路由節點可傳輸的封包大小上限,則包含ICMP回應訊息的封包可以分散傳輸。 若要防止片段,請使用採用 參數的 Send 其中一種方法 options ,並將 屬性設定 DontFragmenttrue。 當 是 DontFragmenttrue 且封包大小總計超過本機和遠端計算機之間其中一個路由節點可傳輸的封包大小上限時,ICMP 回應要求會失敗。 發生這種情況時,會將 Status 設定為 PacketTooBig

封包或封包片段可以透過路由節點 128 次轉送,再被捨棄。 若要變更此設定,請使用 Send 採用 options 參數的多載,並將 屬性設定 Ttl 為所需的值。 如果封包在轉送指定的次數之後未到達其目的地,則會捨棄封包,而且ICMP回應要求會失敗。 發生這種情況時,會將 Status 設定為 TtlExpired

適用於

Send(String)

來源:
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

String,識別 ICMP 回應訊息的目標電腦。 指定給這個參數的值可以是主機名稱或 IP 位址的字串表示。

傳回

PingReply 物件,如果收到 ICMP 回應的回覆訊息,則提供相關資訊,如果未收到訊息則提供失敗的原因。

例外狀況

hostNameOrAddressnull 或空字串 ("")。

傳送或接收 ICMP 訊息時發生例外狀況。 查看被擲回之例外狀況的內部真正例外狀況。

這個物件已經過處置。

範例

下列程式代碼範例示範如何呼叫這個方法。

void SimplePing()
{
   Ping ^ pingSender = gcnew 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 );
   }
}
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 個數據緩衝區。 方法會等候 5 秒的 ICMP 回應回覆訊息。 如果未在該時間收到回復,方法會傳回 ,而且 Status 屬性會設定為 TimedOut

此多載會使用封包片段和封包轉送的預設設定。 如果封包大小總計超過本機和遠端計算機之間其中一個路由節點可傳輸的封包大小上限,則包含ICMP回應訊息的封包可以分散傳輸。 若要防止片段,請使用採用 參數的 Send 其中一種方法 options ,並將 屬性設定 DontFragmenttrue。 當 是 DontFragmenttrue 且封包大小總計超過本機和遠端計算機之間其中一個路由節點可傳輸的封包大小上限時,ICMP 回應要求會失敗。 發生這種情況時,會將 Status 設定為 PacketTooBig。 如果路由節點可以在捨棄之前 128 次轉送分散) ,封包或封包片段 (。 若要變更此設定,請使用 Send 採用 options 參數的多載,並將 屬性設定 Ttl 為所需的值。 如果封包在轉送指定的次數之後未到達其目的地,則會捨棄封包,而且ICMP回應要求會失敗。 發生這種情況時,會將 Status 設定為 TtlExpired

適用於

Send(IPAddress)

來源:
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 回應的回覆訊息,則提供相關資訊,如果未收到訊息則描述失敗的原因。

例外狀況

addressnull

傳送或接收 ICMP 訊息時發生例外狀況。 查看被擲回之例外狀況的內部真正例外狀況。

這個物件已經過處置。

範例

下列程式代碼範例示範如何呼叫這個方法。

void LocalPing()
{
   
   // Ping's the local machine.
   Ping ^ pingSender = gcnew 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 );
   }
}
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指定的主機。 方法會等候 5 秒的 ICMP 回應回覆訊息。 如果未在該時間收到回復,方法會傳回 ,而且 Status 屬性會設定為 TimedOut

此多載會使用封包片段和封包轉送的預設設定。 如果封包大小總計超過本機和遠端計算機之間其中一個路由節點可傳輸的封包大小上限,則包含ICMP回應訊息的封包可以分散傳輸。 若要防止片段,請使用採用 參數的 Send 其中一種方法 options ,並將 屬性設定 DontFragmenttrue。 當 是 DontFragmenttrue 且封包大小總計超過本機和遠端計算機之間其中一個路由節點可傳輸的封包大小上限時,ICMP 回應要求會失敗。 發生這種情況時,會將 Status 設定為 PacketTooBig。 如果路由節點可以在捨棄之前 128 次轉送分散) ,封包或封包片段 (。 若要變更此設定,請使用 Send 採用 options 參數的多載,並將 屬性設定 Ttl 為所需的值。 如果封包在轉送指定的次數之後未到達其目的地,則會捨棄封包,而且ICMP回應要求會失敗。 發生這種情況時,會將 Status 設定為 TtlExpired

適用於