Ping.Send 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
嘗試將因特網控制訊息通訊協定 (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
參數
- timeout
- TimeSpan
值,指定等候ICMP回應回覆訊息的時間上限(傳送回顯訊息之後)。
- 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
嘗試將具有指定數據緩衝區的因特網控制訊息通訊協定 (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
參數
- options
- PingOptions
PingOptions 物件,用來控制ICMP回應訊息封包的片段和存留時間值。
傳回
PingReply 物件,提供收到ICMP回應回覆訊息的相關信息,或提供未收到任何訊息時失敗的原因。
例外狀況
buffer
的大小超過 65500 個字節。
timeout
小於零。
呼叫 SendAsync 正在進行中。
傳送或接收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
參數
- timeout
- TimeSpan
值,指定等候ICMP回應回覆訊息的時間上限(傳送回顯訊息之後)。
- 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
嘗試將具有指定數據緩衝區的因特網控制訊息通訊協定 (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
參數
- options
- PingOptions
PingOptions 物件,用來控制ICMP回應訊息封包的片段和存留時間值。
傳回
PingReply 物件,提供ICMP回應回覆訊息的相關信息、如果已收到訊息,或提供失敗的原因,則為未收到任何訊息。 如果封包超過最大傳輸單位 (MTU), 方法會傳回 PacketTooBig。
例外狀況
buffer
的大小超過 65500 個字節。
address
或 buffer
null
。
timeout
小於零。
呼叫 SendAsync 正在進行中。
傳送或接收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
參數
傳回
PingReply 物件,提供收到ICMP回應回覆訊息的相關信息,或提供未收到任何訊息時失敗的原因。
例外狀況
buffer
的大小超過 65500 個字節。
timeout
小於零。
呼叫 SendAsync 正在進行中。
傳送或接收ICMP訊息時擲回例外狀況。 如需擲回的確切例外狀況,請參閱內部例外狀況。
此物件已處置。
僅限 Linux 上的 .NET 7 和更新版本:此程式為非特殊許可權,且 buffer
不是空的。
範例
如需示範如何呼叫 Send 多載的範例,請參閱 Ping 類別概觀。
備註
如果未在 timeout
參數中指定的時間內收到 ICMP 回應回覆訊息,ICMP 回應會失敗,而且 Status 屬性會設定為 TimedOut。
注意
為 timeout
指定非常小的數位時,即使已經過 timeout
毫秒,仍可接收 Ping 回復。
此多載會使用封包片段和封包轉送的預設設定。 如果封包大小總計超過本機和遠端計算機之間其中一個路由節點可以傳輸的封包大小上限,則包含ICMP回應訊息的封包可能會分散在傳輸中。 若要防止片段化,請使用採用 options
參數的其中一個 Send 方法,並將 DontFragment 屬性設定為 true
。 當 DontFragmenttrue
且封包大小總計超過本機與遠端計算機之間其中一個路由節點可以傳輸的封包大小上限時,ICMP 回應要求會失敗。 發生這種情況時,Status 會設定為 PacketTooBig。
封包或封包片段可以透過路由節點 128 次轉送,然後再捨棄。 若要變更此設定,請使用採用 options
參數的 Send 多載,並將 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
參數
傳回
PingReply 物件,提供ICMP回應回覆訊息的相關信息、如果已收到訊息,或提供失敗的原因,則為未收到任何訊息。 如果封包超過最大傳輸單位 (MTU), 方法會傳回 PacketTooBig。
例外狀況
buffer
的大小超過 65500 個字節。
address
或 buffer
null
。
timeout
小於零。
呼叫 SendAsync 正在進行中。
傳送或接收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回應訊息的封包可能會分散在傳輸中。 若要防止片段化,請使用採用 options
參數的其中一個 Send 方法,並將 DontFragment 屬性設定為 true
。 當 DontFragmenttrue
且封包大小總計超過本機與遠端計算機之間其中一個路由節點可以傳輸的封包大小上限時,ICMP 回應要求會失敗。 發生這種情況時,Status 會設定為 PacketTooBig。
封包或封包片段可以透過路由節點 128 次轉送,然後再捨棄。 若要變更此設定,請使用採用 options
參數的 Send 多載,並將 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
參數
傳回
PingReply 物件,提供收到ICMP回應回覆訊息的相關信息,或提供未收到任何訊息時失敗的原因。
例外狀況
hostNameOrAddress
是 null
或是空字串(“)。
timeout
小於零。
呼叫 SendAsync 正在進行中。
傳送或接收ICMP訊息時擲回例外狀況。 如需擲回的確切例外狀況,請參閱內部例外狀況。
此物件已處置。
範例
如需示範呼叫 Send 方法的範例,請參閱 Ping 類別概觀。
備註
如果未在 timeout
參數中指定的時間內收到 ICMP 回應回覆訊息,ICMP 回應會失敗,而且 Status 屬性會設定為 TimedOut。
注意
為 timeout
指定非常小的數位時,即使已經過 timeout
毫秒,仍可接收 Ping 回復。
此多載會使用封包片段和封包轉送的預設設定。 如果封包大小總計超過本機和遠端計算機之間其中一個路由節點可以傳輸的封包大小上限,則包含ICMP回應訊息的封包可能會分散在傳輸中。 若要防止片段化,請使用採用 options
參數的其中一個 Send 方法,並將 DontFragment 屬性設定為 true
。 當 DontFragmenttrue
且封包大小總計超過本機與遠端計算機之間其中一個路由節點可以傳輸的封包大小上限時,ICMP 回應要求會失敗。 發生這種情況時,Status 會設定為 PacketTooBig。 封包或封包片段(如果已分散),可以透過路由節點 128 次轉送,然後再捨棄。 若要變更此設定,請使用採用 options
參數的 Send 多載,並將 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
參數
傳回
PingReply 物件,提供收到ICMP回應回覆訊息的相關信息,或提供未收到任何訊息時失敗的原因。
例外狀況
address
null
。
timeout
小於零。
呼叫 SendAsync 正在進行中。
傳送或接收ICMP訊息時擲回例外狀況。 如需擲回的確切例外狀況,請參閱內部例外狀況。
此物件已處置。
範例
如需示範呼叫 Send 方法的範例,請參閱 Ping 類別概觀。
備註
如果未在 timeout
參數中指定的時間內收到 ICMP 回應回覆訊息,ICMP 回應會失敗,而且 Status 屬性會設定為 TimedOut。
注意
為 timeout
指定非常小的數位時,即使已經過 timeout
毫秒,仍可接收 Ping 回復。
此多載會使用封包片段和封包轉送的預設設定。 如果封包大小總計超過本機和遠端計算機之間其中一個路由節點可以傳輸的封包大小上限,則包含ICMP回應訊息的封包可能會分散在傳輸中。 若要防止片段化,請使用採用 options
參數的其中一個 Send 方法,並將 DontFragment 屬性設定為 true
。 當 DontFragmenttrue
且封包大小總計超過本機與遠端計算機之間其中一個路由節點可以傳輸的封包大小上限時,ICMP 回應要求會失敗。 發生這種情況時,Status 會設定為 PacketTooBig。
封包或封包片段可以透過路由節點 128 次轉送,然後再捨棄。 若要變更此設定,請使用採用 options
參數的 Send 多載,並將 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
參數
傳回
PingReply 物件,提供ICMP回應回覆訊息的相關信息、如果已收到訊息,或提供失敗的原因,則為未收到任何訊息。
例外狀況
hostNameOrAddress
是 null
或是空字串(“)。
呼叫 SendAsync 正在進行中。
傳送或接收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回應訊息的封包可能會分散在傳輸中。 若要防止片段化,請使用採用 options
參數的其中一個 Send 方法,並將 DontFragment 屬性設定為 true
。 當 DontFragmenttrue
且封包大小總計超過本機與遠端計算機之間其中一個路由節點可以傳輸的封包大小上限時,ICMP 回應要求會失敗。 發生這種情況時,Status 會設定為 PacketTooBig。 封包或封包片段(如果已分散),可以透過路由節點 128 次轉送,然後再捨棄。 若要變更此設定,請使用採用 options
參數的 Send 多載,並將 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
參數
傳回
PingReply 物件,提供ICMP回應回覆訊息的相關信息、如果已收到訊息,或描述未收到任何訊息時失敗的原因。
例外狀況
address
null
。
呼叫 SendAsync 正在進行中。
傳送或接收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回應訊息的封包可能會分散在傳輸中。 若要防止片段化,請使用採用 options
參數的其中一個 Send 方法,並將 DontFragment 屬性設定為 true
。 當 DontFragmenttrue
且封包大小總計超過本機與遠端計算機之間其中一個路由節點可以傳輸的封包大小上限時,ICMP 回應要求會失敗。 發生這種情況時,Status 會設定為 PacketTooBig。 封包或封包片段(如果已分散),可以透過路由節點 128 次轉送,然後再捨棄。 若要變更此設定,請使用採用 options
參數的 Send 多載,並將 Ttl 屬性設定為所需的值。 如果封包在轉送指定的次數后未到達其目的地,則會捨棄封包,ICMP 回應要求會失敗。 發生這種情況時,Status 會設定為 TtlExpired。