Udostępnij za pośrednictwem


Ping.Send Metoda

Definicja

Próbuje wysłać komunikat echa protokołu ICMP (Internet Control Message Protocol) do komputera zdalnego i otrzymać odpowiedni komunikat odpowiedzi echa ICMP z komputera zdalnego.

Przeciążenia

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

Próbuje wysłać komunikat echa protokołu ICMP (Internet Control Message Protocol) do określonego komputera i odebrać odpowiedni komunikat odpowiedzi echa ICMP z tego komputera.

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

Próbuje wysłać komunikat echa protokołu ICMP (Internet Control Message Protocol) z określonym buforem danych do określonego komputera i otrzymać odpowiedni komunikat odpowiedzi echa ICMP z tego komputera. To przeciążenie umożliwia określenie wartości limitu czasu dla operacji i fragmentacji kontrolki oraz wartości Time-to-Live dla pakietu ICMP.

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

Próbuje wysłać komunikat echo protokołu ICMP (Internet Control Message Protocol) do komputera, który ma określony IPAddress, i w celu odebrania odpowiedniego komunikatu odpowiedzi echa ICMP z tego komputera.

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

Próbuje wysłać komunikat echa protokołu ICMP (Internet Control Message Protocol) z określonym buforem danych do komputera z określonym IPAddress i otrzymać odpowiedni komunikat odpowiedzi echa ICMP z tego komputera. To przeciążenie umożliwia określenie wartości limitu czasu dla operacji i fragmentacji kontrolki oraz wartości Time-to-Live dla pakietu komunikatu echa ICMP.

Send(String, Int32, Byte[])

Próbuje wysłać komunikat echa protokołu ICMP (Internet Control Message Protocol) z określonym buforem danych do określonego komputera i otrzymać odpowiedni komunikat odpowiedzi echa ICMP z tego komputera. To przeciążenie umożliwia określenie wartości limitu czasu dla operacji.

Send(IPAddress, Int32, Byte[])

Próbuje wysłać komunikat echa protokołu ICMP (Internet Control Message Protocol) z określonym buforem danych do komputera, który ma określony IPAddress, i otrzyma odpowiedni komunikat odpowiedzi echa ICMP z tego komputera. To przeciążenie umożliwia określenie wartości limitu czasu dla operacji.

Send(String, Int32)

Próbuje wysłać komunikat echa protokołu ICMP (Internet Control Message Protocol) do określonego komputera i otrzymać odpowiedni komunikat odpowiedzi echa ICMP z tego komputera. Ta metoda umożliwia określenie wartości limitu czasu dla operacji.

Send(IPAddress, Int32)

Próbuje wysłać komunikat echa protokołu ICMP (Internet Control Message Protocol) z określonym buforem danych do komputera, który ma określony IPAddress, i otrzyma odpowiedni komunikat odpowiedzi echa ICMP z tego komputera. Ta metoda umożliwia określenie wartości limitu czasu dla operacji.

Send(String)

Próbuje wysłać komunikat echa protokołu ICMP (Internet Control Message Protocol) do określonego komputera i otrzymać odpowiedni komunikat odpowiedzi echa ICMP z tego komputera.

Send(IPAddress)

Próbuje wysłać komunikat echa protokołu ICMP (Internet Control Message Protocol) do komputera, który ma określony IPAddress, i otrzymuje odpowiedni komunikat odpowiedzi echa ICMP z tego komputera.

Uwagi

Adres IP zwrócony przez dowolne z przeciążeń Send może pochodzić ze złośliwego komputera zdalnego. Nie należy łączyć się z komputerem zdalnym przy użyciu tego polecenia. Użyj systemu DNS, aby określić adres IP maszyny, z którą chcesz nawiązać połączenie.

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

Źródło:
Ping.cs
Źródło:
Ping.cs
Źródło:
Ping.cs

Próbuje wysłać komunikat echa protokołu ICMP (Internet Control Message Protocol) do określonego komputera i odebrać odpowiedni komunikat odpowiedzi echa ICMP z tego komputera.

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

Parametry

hostNameOrAddress
String

String identyfikujący komputer, który jest miejscem docelowym komunikatu echa ICMP. Wartość określona dla tego parametru może być nazwą hosta lub ciągiem reprezentującym adres IP.

timeout
TimeSpan

Wartość określająca maksymalny czas (po wysłaniu komunikatu echa) do oczekiwania na komunikat odpowiedzi echa ICMP.

buffer
Byte[]

Tablica Byte zawierająca dane do wysłania z komunikatem echo ICMP i zwrócona w komunikacie odpowiedzi echa ICMP. Tablica nie może zawierać więcej niż 65 500 bajtów.

options
PingOptions

Obiekt PingOptions używany do kontrolowania fragmentacji i wartości time-to-live dla pakietu komunikatów echa ICMP.

Zwraca

Informacje o komunikacie odpowiedzi echa ICMP, jeśli został odebrany lub przyczyna błędu, jeśli nie odebrano żadnego komunikatu.

Wyjątki

buffer lub hostNameOrAddress jest null lub hostNameOrAddress jest pustym ciągiem ("").

timeout reprezentuje czas krótszy niż zero milisekund lub większy niż MaxValue milisekund.

Rozmiar bufferjest większy niż 65 500 bajtów.

Trwa wywołanie metody SendAsync.

Wyjątek został zgłoszony podczas wysyłania lub odbierania komunikatów ICMP. Zobacz wyjątek wewnętrzny, aby uzyskać dokładny wyjątek, który został zgłoszony.

Ten obiekt został usunięty.

Dotyczy

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

Źródło:
Ping.cs
Źródło:
Ping.cs
Źródło:
Ping.cs

Próbuje wysłać komunikat echa protokołu ICMP (Internet Control Message Protocol) z określonym buforem danych do określonego komputera i otrzymać odpowiedni komunikat odpowiedzi echa ICMP z tego komputera. To przeciążenie umożliwia określenie wartości limitu czasu dla operacji i fragmentacji kontrolki oraz wartości Time-to-Live dla pakietu 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

Parametry

hostNameOrAddress
String

String identyfikujący komputer, który jest miejscem docelowym komunikatu echa ICMP. Wartość określona dla tego parametru może być nazwą hosta lub ciągiem reprezentującym adres IP.

timeout
Int32

Wartość Int32 określająca maksymalną liczbę milisekund (po wysłaniu wiadomości echa), aby poczekać na komunikat odpowiedzi echa ICMP.

buffer
Byte[]

Tablica Byte zawierająca dane do wysłania z komunikatem echo ICMP i zwrócona w komunikacie odpowiedzi echa ICMP. Tablica nie może zawierać więcej niż 65 500 bajtów.

options
PingOptions

Obiekt PingOptions używany do kontrolowania fragmentacji i wartości time-to-live dla pakietu komunikatów echa ICMP.

Zwraca

Obiekt PingReply, który zawiera informacje o komunikacie odpowiedzi echa ICMP, jeśli został odebrany, lub podaje przyczynę błędu, jeśli nie odebrano komunikatu.

Wyjątki

Rozmiar buffer przekracza 65500 bajtów.

hostNameOrAddress jest null lub jest ciągiem o zerowej długości.

-lub-

buffer jest null.

timeout jest mniejsza niż zero.

Wyjątek został zgłoszony podczas wysyłania lub odbierania komunikatów ICMP. Zobacz wyjątek wewnętrzny, aby uzyskać dokładny wyjątek, który został zgłoszony.

Ten obiekt został usunięty.

.NET 7 i nowsze wersje tylko w systemie Linux: proces jest nieuprzywilejowany, a buffer nie jest pusty.

Przykłady

W poniższym przykładzie kodu pokazano, jak wywołać tę metodę.

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

Uwagi

Jeśli komunikat odpowiedzi echa ICMP nie zostanie odebrany w czasie określonym przez parametr timeout, echo ICMP zakończy się niepowodzeniem, a właściwość Status zostanie ustawiona na TimedOut.

Nuta

Podczas określania bardzo małych liczb dla timeoutmożna odebrać odpowiedź ping, nawet jeśli upłynęło timeout milisekundy.

Jeśli właściwość DontFragment jest true, a łączny rozmiar pakietu przekracza maksymalny rozmiar pakietu, który może być przesyłany przez jeden z węzłów routingu między komputerami lokalnymi i zdalnymi, żądanie echa ICMP kończy się niepowodzeniem. W takim przypadku Status jest ustawiona na PacketTooBig.

Użyj właściwości Ttl, aby określić maksymalną liczbę przypadków przekazywania komunikatu echa ICMP przed dotarciem do miejsca docelowego. Jeśli pakiet nie osiągnie miejsca docelowego po przesłaniu dalej określonej liczby razy, pakiet zostanie odrzucony, a żądanie echa ICMP zakończy się niepowodzeniem. W takim przypadku Status jest ustawiona na TtlExpired.

Dotyczy

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

Źródło:
Ping.cs
Źródło:
Ping.cs
Źródło:
Ping.cs

Próbuje wysłać komunikat echo protokołu ICMP (Internet Control Message Protocol) do komputera, który ma określony IPAddress, i w celu odebrania odpowiedniego komunikatu odpowiedzi echa ICMP z tego komputera.

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

Parametry

address
IPAddress

IPAddress identyfikujący komputer, który jest miejscem docelowym komunikatu echa ICMP.

timeout
TimeSpan

Wartość określająca maksymalny czas (po wysłaniu komunikatu echa) do oczekiwania na komunikat odpowiedzi echa ICMP.

buffer
Byte[]

Tablica Byte zawierająca dane do wysłania z komunikatem echo ICMP i zwrócona w komunikacie odpowiedzi echa ICMP. Tablica nie może zawierać więcej niż 65 500 bajtów.

options
PingOptions

Obiekt PingOptions używany do kontrolowania fragmentacji i wartości time-to-live dla pakietu komunikatów echa ICMP.

Zwraca

Informacje o komunikacie odpowiedzi echa ICMP, jeśli został odebrany lub przyczyna błędu, jeśli nie odebrano żadnego komunikatu.

Wyjątki

address lub buffer jest null.

timeout reprezentuje czas krótszy niż zero milisekund lub większy niż MaxValue milisekund.

Rozmiar bufferjest większy niż 65 500 bajtów.

Trwa wywołanie metody SendAsync.

Wyjątek został zgłoszony podczas wysyłania lub odbierania komunikatów ICMP. Zobacz wyjątek wewnętrzny, aby uzyskać dokładny wyjątek, który został zgłoszony.

Ten obiekt został usunięty.

Dotyczy

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

Źródło:
Ping.cs
Źródło:
Ping.cs
Źródło:
Ping.cs

Próbuje wysłać komunikat echa protokołu ICMP (Internet Control Message Protocol) z określonym buforem danych do komputera z określonym IPAddress i otrzymać odpowiedni komunikat odpowiedzi echa ICMP z tego komputera. To przeciążenie umożliwia określenie wartości limitu czasu dla operacji i fragmentacji kontrolki oraz wartości Time-to-Live dla pakietu komunikatu echa 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

Parametry

address
IPAddress

IPAddress identyfikujący komputer, który jest miejscem docelowym komunikatu echa ICMP.

timeout
Int32

Wartość Int32 określająca maksymalną liczbę milisekund (po wysłaniu wiadomości echa), aby poczekać na komunikat odpowiedzi echa ICMP.

buffer
Byte[]

Tablica Byte zawierająca dane do wysłania z komunikatem echo ICMP i zwrócona w komunikacie odpowiedzi echa ICMP. Tablica nie może zawierać więcej niż 65 500 bajtów.

options
PingOptions

Obiekt PingOptions używany do kontrolowania fragmentacji i wartości time-to-live dla pakietu komunikatów echa ICMP.

Zwraca

Obiekt PingReply, który zawiera informacje o komunikacie odpowiedzi echa ICMP, jeśli został odebrany lub podaje przyczynę błędu, jeśli nie odebrano komunikatu. Metoda zwróci PacketTooBig, jeśli pakiet przekroczy maksymalną jednostkę transmisji (MTU).

Wyjątki

Rozmiar buffer przekracza 65500 bajtów.

address lub buffer jest null.

timeout jest mniejsza niż zero.

Wyjątek został zgłoszony podczas wysyłania lub odbierania komunikatów ICMP. Zobacz wyjątek wewnętrzny, aby uzyskać dokładny wyjątek, który został zgłoszony.

Ten obiekt został usunięty.

.NET 7 i nowsze wersje tylko w systemie Linux: proces jest nieuprzywilejowany, a buffer nie jest pusty.

Przykłady

W poniższym przykładzie kodu pokazano, jak wywołać tę metodę.

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

Uwagi

Jeśli komunikat odpowiedzi echa ICMP nie zostanie odebrany w czasie określonym przez parametr timeout, echo ICMP zakończy się niepowodzeniem, a właściwość Status zostanie ustawiona na TimedOut.

Nuta

Podczas określania bardzo małych liczb dla timeoutmożna odebrać odpowiedź ping, nawet jeśli upłynęło timeout milisekundy.

Jeśli właściwość DontFragment jest true, a łączny rozmiar pakietu przekracza maksymalny rozmiar pakietu, który może być przesyłany przez jeden z węzłów routingu między komputerami lokalnymi i zdalnymi, żądanie echa ICMP kończy się niepowodzeniem. W takim przypadku Status jest ustawiona na PacketTooBig.

Użyj właściwości Ttl, aby określić maksymalną liczbę przypadków przekazywania komunikatu echa ICMP przed dotarciem do miejsca docelowego. Jeśli pakiet nie osiągnie miejsca docelowego po przesłaniu dalej określonej liczby razy, pakiet zostanie odrzucony, a żądanie echa ICMP zakończy się niepowodzeniem. W takim przypadku Status jest ustawiona na TtlExpired.

Dotyczy

Send(String, Int32, Byte[])

Źródło:
Ping.cs
Źródło:
Ping.cs
Źródło:
Ping.cs

Próbuje wysłać komunikat echa protokołu ICMP (Internet Control Message Protocol) z określonym buforem danych do określonego komputera i otrzymać odpowiedni komunikat odpowiedzi echa ICMP z tego komputera. To przeciążenie umożliwia określenie wartości limitu czasu dla operacji.

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

Parametry

hostNameOrAddress
String

String identyfikujący komputer, który jest miejscem docelowym komunikatu echa ICMP. Wartość określona dla tego parametru może być nazwą hosta lub ciągiem reprezentującym adres IP.

timeout
Int32

Wartość Int32 określająca maksymalną liczbę milisekund (po wysłaniu wiadomości echa), aby poczekać na komunikat odpowiedzi echa ICMP.

buffer
Byte[]

Tablica Byte zawierająca dane do wysłania z komunikatem echo ICMP i zwrócona w komunikacie odpowiedzi echa ICMP. Tablica nie może zawierać więcej niż 65 500 bajtów.

Zwraca

Obiekt PingReply, który zawiera informacje o komunikacie odpowiedzi echa ICMP, jeśli został odebrany, lub podaje przyczynę błędu, jeśli nie odebrano komunikatu.

Wyjątki

Rozmiar buffer przekracza 65500 bajtów.

hostNameOrAddress jest null lub jest pustym ciągiem ("").

-lub-

buffer jest null.

timeout jest mniejsza niż zero.

Wyjątek został zgłoszony podczas wysyłania lub odbierania komunikatów ICMP. Zobacz wyjątek wewnętrzny, aby uzyskać dokładny wyjątek, który został zgłoszony.

Ten obiekt został usunięty.

.NET 7 i nowsze wersje tylko w systemie Linux: proces jest nieuprzywilejowany, a buffer nie jest pusty.

Przykłady

Aby zapoznać się z przykładem wywoływania przeciążenia Send, zobacz omówienie klasy Ping.

Uwagi

Jeśli komunikat odpowiedzi echa ICMP nie zostanie odebrany w czasie określonym w parametrze timeout, echo ICMP zakończy się niepowodzeniem, a właściwość Status zostanie ustawiona na TimedOut.

Nuta

Podczas określania bardzo małych liczb dla timeoutmożna odebrać odpowiedź ping, nawet jeśli upłynęło timeout milisekundy.

To przeciążenie używa domyślnych ustawień fragmentacji pakietów i przekazywania pakietów. Pakiet zawierający komunikat echa ICMP można fragmentować w trakcie przesyłania, jeśli całkowity rozmiar pakietu przekracza maksymalny rozmiar pakietu, który może być przesyłany przez jeden z węzłów routingu między komputerami lokalnymi i zdalnymi. Aby zapobiec fragmentacji, użyj jednej z metod Send, która przyjmuje parametr options, i ustaw właściwość DontFragment na true. Jeśli DontFragment jest true, a łączny rozmiar pakietu przekracza maksymalny rozmiar pakietu, który może być przesyłany przez jeden z węzłów routingu między komputerami lokalnymi i zdalnymi, żądanie echa ICMP kończy się niepowodzeniem. W takim przypadku Status jest ustawiona na PacketTooBig.

Fragmenty pakietu lub pakietu mogą być przekazywane przez węzły rozsyłania 128 razy, zanim zostaną odrzucone. Aby zmienić to ustawienie, użyj przeciążenia Send, które przyjmuje parametr options, i ustaw właściwość Ttl na żądaną wartość. Jeśli pakiet nie osiągnie miejsca docelowego po przesłaniu dalej określonej liczby razy, pakiet zostanie odrzucony, a żądanie echa ICMP zakończy się niepowodzeniem. W takim przypadku Status jest ustawiona na TtlExpired.

Dotyczy

Send(IPAddress, Int32, Byte[])

Źródło:
Ping.cs
Źródło:
Ping.cs
Źródło:
Ping.cs

Próbuje wysłać komunikat echa protokołu ICMP (Internet Control Message Protocol) z określonym buforem danych do komputera, który ma określony IPAddress, i otrzyma odpowiedni komunikat odpowiedzi echa ICMP z tego komputera. To przeciążenie umożliwia określenie wartości limitu czasu dla operacji.

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

Parametry

address
IPAddress

IPAddress identyfikujący komputer, który jest miejscem docelowym komunikatu echa ICMP.

timeout
Int32

Wartość Int32 określająca maksymalną liczbę milisekund (po wysłaniu wiadomości echa), aby poczekać na komunikat odpowiedzi echa ICMP.

buffer
Byte[]

Tablica Byte zawierająca dane do wysłania z komunikatem echo ICMP i zwrócona w komunikacie odpowiedzi echa ICMP. Tablica nie może zawierać więcej niż 65 500 bajtów.

Zwraca

Obiekt PingReply, który zawiera informacje o komunikacie odpowiedzi echa ICMP, jeśli został odebrany lub podaje przyczynę błędu, jeśli nie odebrano komunikatu. Metoda zwróci PacketTooBig, jeśli pakiet przekroczy maksymalną jednostkę transmisji (MTU).

Wyjątki

Rozmiar buffer przekracza 65500 bajtów.

address lub buffer jest null.

timeout jest mniejsza niż zero.

Wyjątek został zgłoszony podczas wysyłania lub odbierania komunikatów ICMP. Zobacz wyjątek wewnętrzny, aby uzyskać dokładny wyjątek, który został zgłoszony.

Ten obiekt został usunięty.

.NET 7 i nowsze wersje tylko w systemie Linux: proces jest nieuprzywilejowany, a buffer nie jest pusty.

Przykłady

W poniższym przykładzie kodu pokazano, jak wywołać tę metodę.

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

Uwagi

Jeśli komunikat odpowiedzi echa ICMP nie zostanie odebrany w czasie określonym w parametrze timeout, echo ICMP zakończy się niepowodzeniem, a właściwość Status zostanie ustawiona na TimedOut.

Nuta

Podczas określania bardzo małych liczb dla timeoutmożna odebrać odpowiedź ping, nawet jeśli upłynęło timeout milisekundy.

To przeciążenie używa domyślnych ustawień fragmentacji pakietów i przekazywania pakietów. Pakiet zawierający komunikat echa ICMP można fragmentować w trakcie przesyłania, jeśli całkowity rozmiar pakietu przekracza maksymalny rozmiar pakietu, który może być przesyłany przez jeden z węzłów routingu między komputerami lokalnymi i zdalnymi. Aby zapobiec fragmentacji, użyj jednej z metod Send, która przyjmuje parametr options, i ustaw właściwość DontFragment na true. Jeśli DontFragment jest true, a łączny rozmiar pakietu przekracza maksymalny rozmiar pakietu, który może być przesyłany przez jeden z węzłów routingu między komputerami lokalnymi i zdalnymi, żądanie echa ICMP kończy się niepowodzeniem. W takim przypadku Status jest ustawiona na PacketTooBig.

Fragmenty pakietu lub pakietu mogą być przekazywane przez węzły rozsyłania 128 razy, zanim zostaną odrzucone. Aby zmienić to ustawienie, użyj przeciążenia Send, które przyjmuje parametr options, i ustaw właściwość Ttl na żądaną wartość. Jeśli pakiet nie osiągnie miejsca docelowego po przesłaniu dalej określonej liczby razy, pakiet zostanie odrzucony, a żądanie echa ICMP zakończy się niepowodzeniem. W takim przypadku Status jest ustawiona na TtlExpired.

Dotyczy

Send(String, Int32)

Źródło:
Ping.cs
Źródło:
Ping.cs
Źródło:
Ping.cs

Próbuje wysłać komunikat echa protokołu ICMP (Internet Control Message Protocol) do określonego komputera i otrzymać odpowiedni komunikat odpowiedzi echa ICMP z tego komputera. Ta metoda umożliwia określenie wartości limitu czasu dla operacji.

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

Parametry

hostNameOrAddress
String

String identyfikujący komputer, który jest miejscem docelowym komunikatu echa ICMP. Wartość określona dla tego parametru może być nazwą hosta lub ciągiem reprezentującym adres IP.

timeout
Int32

Wartość Int32 określająca maksymalną liczbę milisekund (po wysłaniu wiadomości echa), aby poczekać na komunikat odpowiedzi echa ICMP.

Zwraca

Obiekt PingReply, który zawiera informacje o komunikacie odpowiedzi echa ICMP, jeśli został odebrany, lub podaje przyczynę błędu, jeśli nie odebrano komunikatu.

Wyjątki

hostNameOrAddress jest null lub jest pustym ciągiem ("").

timeout jest mniejsza niż zero.

Wyjątek został zgłoszony podczas wysyłania lub odbierania komunikatów ICMP. Zobacz wyjątek wewnętrzny, aby uzyskać dokładny wyjątek, który został zgłoszony.

Ten obiekt został usunięty.

Przykłady

Aby zapoznać się z przykładem wywoływania metody Send, zobacz omówienie klasy Ping.

Uwagi

Jeśli komunikat odpowiedzi echa ICMP nie zostanie odebrany w czasie określonym w parametrze timeout, echo ICMP zakończy się niepowodzeniem, a właściwość Status zostanie ustawiona na TimedOut.

Nuta

Podczas określania bardzo małych liczb dla timeoutmożna odebrać odpowiedź ping, nawet jeśli upłynęło timeout milisekundy.

To przeciążenie używa domyślnych ustawień fragmentacji pakietów i przekazywania pakietów. Pakiet zawierający komunikat echa ICMP można fragmentować w trakcie przesyłania, jeśli całkowity rozmiar pakietu przekracza maksymalny rozmiar pakietu, który może być przesyłany przez jeden z węzłów routingu między komputerami lokalnymi i zdalnymi. Aby zapobiec fragmentacji, użyj jednej z metod Send, która przyjmuje parametr options, i ustaw właściwość DontFragment na true. Jeśli DontFragment jest true, a łączny rozmiar pakietu przekracza maksymalny rozmiar pakietu, który może być przesyłany przez jeden z węzłów routingu między komputerami lokalnymi i zdalnymi, żądanie echa ICMP kończy się niepowodzeniem. W takim przypadku Status jest ustawiona na PacketTooBig. Pakiety lub fragmenty pakietów (jeśli zostały pofragmentowane) mogą być przekazywane przez węzły routingu 128 razy przed odrzuceniem. Aby zmienić to ustawienie, użyj przeciążenia Send, które przyjmuje parametr options, i ustaw właściwość Ttl na żądaną wartość. Jeśli pakiet nie osiągnie miejsca docelowego po przesłaniu dalej określonej liczby razy, pakiet zostanie odrzucony, a żądanie echa ICMP zakończy się niepowodzeniem. W takim przypadku Status jest ustawiona na TtlExpired.

Dotyczy

Send(IPAddress, Int32)

Źródło:
Ping.cs
Źródło:
Ping.cs
Źródło:
Ping.cs

Próbuje wysłać komunikat echa protokołu ICMP (Internet Control Message Protocol) z określonym buforem danych do komputera, który ma określony IPAddress, i otrzyma odpowiedni komunikat odpowiedzi echa ICMP z tego komputera. Ta metoda umożliwia określenie wartości limitu czasu dla operacji.

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

Parametry

address
IPAddress

IPAddress identyfikujący komputer, który jest miejscem docelowym komunikatu echa ICMP.

timeout
Int32

Wartość Int32 określająca maksymalną liczbę milisekund (po wysłaniu wiadomości echa), aby poczekać na komunikat odpowiedzi echa ICMP.

Zwraca

Obiekt PingReply, który zawiera informacje o komunikacie odpowiedzi echa ICMP, jeśli został odebrany, lub podaje przyczynę błędu, jeśli nie odebrano komunikatu.

Wyjątki

address jest null.

timeout jest mniejsza niż zero.

Wyjątek został zgłoszony podczas wysyłania lub odbierania komunikatów ICMP. Zobacz wyjątek wewnętrzny, aby uzyskać dokładny wyjątek, który został zgłoszony.

Ten obiekt został usunięty.

Przykłady

Aby zapoznać się z przykładem wywoływania metody Send, zobacz omówienie klasy Ping.

Uwagi

Jeśli komunikat odpowiedzi echa ICMP nie zostanie odebrany w czasie określonym w parametrze timeout, echo ICMP zakończy się niepowodzeniem, a właściwość Status zostanie ustawiona na TimedOut.

Nuta

Podczas określania bardzo małych liczb dla timeoutmożna odebrać odpowiedź ping, nawet jeśli upłynęło timeout milisekundy.

To przeciążenie używa domyślnych ustawień fragmentacji pakietów i przekazywania pakietów. Pakiet zawierający komunikat echa ICMP można fragmentować w trakcie przesyłania, jeśli całkowity rozmiar pakietu przekracza maksymalny rozmiar pakietu, który może być przesyłany przez jeden z węzłów routingu między komputerami lokalnymi i zdalnymi. Aby zapobiec fragmentacji, użyj jednej z metod Send, która przyjmuje parametr options, i ustaw właściwość DontFragment na true. Jeśli DontFragment jest true, a łączny rozmiar pakietu przekracza maksymalny rozmiar pakietu, który może być przesyłany przez jeden z węzłów routingu między komputerami lokalnymi i zdalnymi, żądanie echa ICMP kończy się niepowodzeniem. W takim przypadku Status jest ustawiona na PacketTooBig.

Fragmenty pakietu lub pakietu mogą być przekazywane przez węzły rozsyłania 128 razy, zanim zostaną odrzucone. Aby zmienić to ustawienie, użyj przeciążenia Send, które przyjmuje parametr options, i ustaw właściwość Ttl na żądaną wartość. Jeśli pakiet nie osiągnie miejsca docelowego po przesłaniu dalej określonej liczby razy, pakiet zostanie odrzucony, a żądanie echa ICMP zakończy się niepowodzeniem. W takim przypadku Status jest ustawiona na TtlExpired.

Dotyczy

Send(String)

Źródło:
Ping.cs
Źródło:
Ping.cs
Źródło:
Ping.cs

Próbuje wysłać komunikat echa protokołu ICMP (Internet Control Message Protocol) do określonego komputera i otrzymać odpowiedni komunikat odpowiedzi echa ICMP z tego komputera.

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

Parametry

hostNameOrAddress
String

String identyfikujący komputer, który jest miejscem docelowym komunikatu echa ICMP. Wartość określona dla tego parametru może być nazwą hosta lub ciągiem reprezentującym adres IP.

Zwraca

Obiekt PingReply, który zawiera informacje o komunikacie odpowiedzi echa ICMP, jeśli został odebrany lub podaje przyczynę błędu, jeśli nie odebrano komunikatu.

Wyjątki

hostNameOrAddress jest null lub jest pustym ciągiem ("").

Wyjątek został zgłoszony podczas wysyłania lub odbierania komunikatów ICMP. Zobacz wyjątek wewnętrzny, aby uzyskać dokładny wyjątek, który został zgłoszony.

Ten obiekt został usunięty.

Przykłady

W poniższym przykładzie kodu pokazano wywołanie tej metody.

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

Uwagi

Ta metoda wysyła 32 Byte bufor danych z komunikatem echa ICMP. Metoda czeka pięć sekund na komunikat odpowiedzi echa ICMP. Jeśli w tym czasie nie otrzyma odpowiedzi, metoda zwraca wartość , a właściwość Status jest ustawiona na wartość TimedOut.

To przeciążenie używa domyślnych ustawień fragmentacji pakietów i przekazywania pakietów. Pakiet zawierający komunikat echa ICMP można fragmentować w trakcie przesyłania, jeśli całkowity rozmiar pakietu przekracza maksymalny rozmiar pakietu, który może być przesyłany przez jeden z węzłów routingu między komputerami lokalnymi i zdalnymi. Aby zapobiec fragmentacji, użyj jednej z metod Send, która przyjmuje parametr options, i ustaw właściwość DontFragment na true. Jeśli DontFragment jest true, a łączny rozmiar pakietu przekracza maksymalny rozmiar pakietu, który może być przesyłany przez jeden z węzłów routingu między komputerami lokalnymi i zdalnymi, żądanie echa ICMP kończy się niepowodzeniem. W takim przypadku Status jest ustawiona na PacketTooBig. Pakiety lub fragmenty pakietów (jeśli zostały pofragmentowane) mogą być przekazywane przez węzły routingu 128 razy przed odrzuceniem. Aby zmienić to ustawienie, użyj przeciążenia Send, które przyjmuje parametr options, i ustaw właściwość Ttl na żądaną wartość. Jeśli pakiet nie osiągnie miejsca docelowego po przesłaniu dalej określonej liczby razy, pakiet zostanie odrzucony, a żądanie echa ICMP zakończy się niepowodzeniem. W takim przypadku Status jest ustawiona na TtlExpired.

Dotyczy

Send(IPAddress)

Źródło:
Ping.cs
Źródło:
Ping.cs
Źródło:
Ping.cs

Próbuje wysłać komunikat echa protokołu ICMP (Internet Control Message Protocol) do komputera, który ma określony IPAddress, i otrzymuje odpowiedni komunikat odpowiedzi echa ICMP z tego komputera.

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

Parametry

address
IPAddress

IPAddress identyfikujący komputer, który jest miejscem docelowym komunikatu echa ICMP.

Zwraca

Obiekt PingReply, który zawiera informacje o komunikacie odpowiedzi echa ICMP, jeśli został odebrany, lub opisuje przyczynę błędu, jeśli nie odebrano komunikatu.

Wyjątki

address jest null.

Wyjątek został zgłoszony podczas wysyłania lub odbierania komunikatów ICMP. Zobacz wyjątek wewnętrzny, aby uzyskać dokładny wyjątek, który został zgłoszony.

Ten obiekt został usunięty.

Przykłady

W poniższym przykładzie kodu pokazano wywołanie tej metody.

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

Uwagi

Ta metoda wysyła do hosta określonego przez address 32 Byte bufor danych z komunikatem echo ICMP. Metoda czeka pięć sekund na komunikat odpowiedzi echa ICMP. Jeśli w tym czasie nie otrzyma odpowiedzi, metoda zwraca wartość , a właściwość Status jest ustawiona na wartość TimedOut.

To przeciążenie używa domyślnych ustawień fragmentacji pakietów i przekazywania pakietów. Pakiet zawierający komunikat echa ICMP można fragmentować w trakcie przesyłania, jeśli całkowity rozmiar pakietu przekracza maksymalny rozmiar pakietu, który może być przesyłany przez jeden z węzłów routingu między komputerami lokalnymi i zdalnymi. Aby zapobiec fragmentacji, użyj jednej z metod Send, która przyjmuje parametr options, i ustaw właściwość DontFragment na true. Jeśli DontFragment jest true, a łączny rozmiar pakietu przekracza maksymalny rozmiar pakietu, który może być przesyłany przez jeden z węzłów routingu między komputerami lokalnymi i zdalnymi, żądanie echa ICMP kończy się niepowodzeniem. W takim przypadku Status jest ustawiona na PacketTooBig. Pakiety lub fragmenty pakietów (jeśli zostały pofragmentowane) mogą być przekazywane przez węzły routingu 128 razy przed odrzuceniem. Aby zmienić to ustawienie, użyj przeciążenia Send, które przyjmuje parametr options, i ustaw właściwość Ttl na żądaną wartość. Jeśli pakiet nie osiągnie miejsca docelowego po przesłaniu dalej określonej liczby razy, pakiet zostanie odrzucony, a żądanie echa ICMP zakończy się niepowodzeniem. W takim przypadku Status jest ustawiona na TtlExpired.

Dotyczy