Поделиться через


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.

Комментарии

IP-адрес, возвращаемый любой Send из перегрузок, может исходить от вредоносного удаленного компьютера. Не подключайтесь к удаленному компьютеру с помощью этого параметра. Используйте 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 или 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

Параметры

hostNameOrAddress
String

Объект 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 не является пустым.

Примеры

В следующем примере кода показано, как вызвать этот метод.

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

Комментарии

Если сообщение ответа на эхо ICMP не получено в течение времени, указанного timeout параметром , то эхо ICMP завершается ошибкой, а свойству Status присваивается значение TimedOut.

Примечание

При указании очень небольших чисел для timeoutответа Ping можно получить, даже если timeout прошло миллисекунда.

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, если оно было получено, или причина сбоя, если сообщение не было получено.

Исключения

Параметр 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

Параметры

address
IPAddress

Объект IPAddress, идентифицирующий компьютер, на который будет направлено данное сообщение проверки связи ICMP.

timeout
Int32

Значение Int32, указывающее максимальное время (после отправки сообщения проверки связи) ожидания сообщения ответа проверки связи ICMP в миллисекундах.

buffer
Byte[]

Массив Byte, содержащие данные, отправляемые с сообщением проверки связи ICMP и возвращаемые с сообщением ответа проверки связи ICMP. Массив не может содержать более 65 500 байт.

options
PingOptions

Объект PingOptions, используемый для управления значениями фрагментации и срока жизни пакета сообщения проверки связи ICMP.

Возвращаемое значение

Объект PingReply, предоставляющий сведения о сообщении ответа проверки связи ICMP, если оно было получено, или причину сбоя, если сообщение не было получено. Метод возвращает PacketTooBig, если пакет превышает MTU.

Исключения

Размер буфера, указанного в параметре buffer, превышает 65500 байт.

Параметр address или buffer имеет значение null.

Значение параметра timeout меньше нуля.

Выполняется вызов SendAsync.

Возникло исключение при отправке или получении сообщений ICMP. Чтобы узнать, какое именно исключение возникло, обратитесь ко внутреннему исключению.

Данный объект удален.

.NET 7 и более поздних версий только в Linux: процесс не является привилегированным и 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);
    }
}

Комментарии

Если сообщение ответа на эхо ICMP не получено в течение времени, указанного timeout параметром , то эхо ICMP завершается сбоем, а свойству Status присваивается значение TimedOut.

Примечание

При указании очень небольших чисел для timeoutответа Ping можно получить, даже если timeout прошло миллисекунда.

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 байт.

Параметр hostNameOrAddress равен null или является пустой строкой ("").

-или-

buffer имеет значение null.

Значение параметра timeout меньше нуля.

Выполняется вызов SendAsync.

Возникло исключение при отправке или получении сообщений ICMP. Чтобы узнать, какое именно исключение возникло, обратитесь ко внутреннему исключению.

Данный объект удален.

.NET 7 и более поздних версий только в Linux: процесс не является привилегированным и buffer не является пустым.

Примеры

Пример, демонстрирующий вызов Send перегрузки, см. в обзоре Ping класса.

Комментарии

Если сообщение ответа на эхо ICMP не получено в течение времени, указанного timeout в параметре , то эхо ICMP завершается сбоем и Status свойство имеет значение TimedOut.

Примечание

При указании очень небольших чисел для timeoutответа Ping можно получить, даже если timeout прошло миллисекунда.

Эта перегрузка использует параметры по умолчанию для фрагментации и пересылки пакетов. Пакет, содержащий эхо-сообщение ICMP, может быть фрагментирован при передаче, если общий размер пакета превышает максимальный размер пакета, который может быть передан одним из узлов маршрутизации между локальным и удаленным компьютерами. Чтобы предотвратить фрагментацию, используйте один из Send методов, который принимает options параметр , и задайте для свойства значение DontFragmenttrue. Если DontFragment имеет значение true и общий размер пакета превышает максимальный размер пакета, который может быть передан одним из узлов маршрутизации между локальным и удаленным компьютерами, запрос на эхо ICMP завершается ошибкой. В этом случае параметру Status присваивается значение PacketTooBig.

Пакет или фрагменты пакетов можно перенаправить, перенаправив узлы 128 раз, прежде чем они будут удалены. Чтобы изменить этот параметр, используйте перегрузку Sendoptions , которая принимает параметр, и присвойте 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, если оно было получено, или причину сбоя, если сообщение не было получено. Метод возвращает PacketTooBig, если пакет превышает MTU.

Исключения

Размер буфера, указанного в параметре buffer, превышает 65500 байт.

Параметр address или buffer имеет значение null.

Значение параметра timeout меньше нуля.

Выполняется вызов SendAsync.

Возникло исключение при отправке или получении сообщений ICMP. Чтобы узнать, какое именно исключение возникло, обратитесь ко внутреннему исключению.

Данный объект удален.

.NET 7 и более поздних версий только в Linux: процесс не является привилегированным и 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);
    }
}

Комментарии

Если сообщение ответа на эхо ICMP не получено в течение времени, указанного timeout в параметре , то эхо ICMP завершается сбоем и Status свойство имеет значение TimedOut.

Примечание

При указании очень небольших чисел для timeoutответа Ping можно получить, даже если timeout прошло миллисекунда.

Эта перегрузка использует параметры по умолчанию для фрагментации и пересылки пакетов. Пакет, содержащий эхо-сообщение ICMP, может быть фрагментирован при передаче, если общий размер пакета превышает максимальный размер пакета, который может быть передан одним из узлов маршрутизации между локальным и удаленным компьютерами. Чтобы предотвратить фрагментацию, используйте один из Send методов, который принимает options параметр , и задайте для свойства значение DontFragmenttrue. Если DontFragment имеет значение true и общий размер пакета превышает максимальный размер пакета, который может быть передан одним из узлов маршрутизации между локальным и удаленным компьютерами, запрос на эхо ICMP завершается ошибкой. В этом случае параметру Status присваивается значение PacketTooBig.

Пакет или фрагменты пакетов можно перенаправить, перенаправив узлы 128 раз, прежде чем они будут удалены. Чтобы изменить этот параметр, используйте перегрузку Sendoptions , которая принимает параметр, и присвойте 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, если оно было получено, или причину сбоя, если сообщение не было получено.

Исключения

Параметр hostNameOrAddress равен null или является пустой строкой ("").

Значение параметра timeout меньше нуля.

Выполняется вызов SendAsync.

Возникло исключение при отправке или получении сообщений ICMP. Чтобы узнать, какое именно исключение возникло, обратитесь ко внутреннему исключению.

Данный объект удален.

Примеры

Пример, демонстрирующий Send вызов метода, см. в обзоре Ping класса.

Комментарии

Если сообщение ответа на эхо ICMP не получено в течение времени, указанного timeout в параметре , то эхо ICMP завершается сбоем и Status свойство имеет значение TimedOut.

Примечание

При указании очень небольших чисел для timeoutответа Ping можно получить, даже если timeout прошло миллисекунда.

Эта перегрузка использует параметры по умолчанию для фрагментации и пересылки пакетов. Пакет, содержащий эхо-сообщение ICMP, может быть фрагментирован при передаче, если общий размер пакета превышает максимальный размер пакета, который может быть передан одним из узлов маршрутизации между локальным и удаленным компьютерами. Чтобы предотвратить фрагментацию, используйте один из Send методов, который принимает options параметр , и задайте для свойства значение DontFragmenttrue. Если DontFragment имеет значение true и общий размер пакета превышает максимальный размер пакета, который может быть передан одним из узлов маршрутизации между локальным и удаленным компьютерами, запрос на эхо ICMP завершается ошибкой. В этом случае параметру Status присваивается значение PacketTooBig. Пакеты или фрагменты пакетов (если они фрагментированы) можно перенаправить путем маршрутизации узлов 128 раз, прежде чем они будут удалены. Чтобы изменить этот параметр, используйте перегрузку Sendoptions , которая принимает параметр, и присвойте 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, если оно было получено, или причину сбоя, если сообщение не было получено.

Исключения

address имеет значение null.

Значение параметра timeout меньше нуля.

Выполняется вызов SendAsync.

Возникло исключение при отправке или получении сообщений ICMP. Чтобы узнать, какое именно исключение возникло, обратитесь ко внутреннему исключению.

Данный объект удален.

Примеры

Пример, демонстрирующий Send вызов метода, см. в обзоре Ping класса.

Комментарии

Если сообщение ответа на эхо ICMP не получено в течение времени, указанного timeout в параметре , то эхо ICMP завершается сбоем и Status свойство имеет значение TimedOut.

Примечание

При указании очень небольших чисел для timeoutответа Ping можно получить, даже если timeout прошло миллисекунда.

Эта перегрузка использует параметры по умолчанию для фрагментации и пересылки пакетов. Пакет, содержащий эхо-сообщение ICMP, может быть фрагментирован при передаче, если общий размер пакета превышает максимальный размер пакета, который может быть передан одним из узлов маршрутизации между локальным и удаленным компьютерами. Чтобы предотвратить фрагментацию, используйте один из Send методов, который принимает options параметр , и задайте для свойства значение DontFragmenttrue. Если DontFragment имеет значение true и общий размер пакета превышает максимальный размер пакета, который может быть передан одним из узлов маршрутизации между локальным и удаленным компьютерами, запрос на эхо ICMP завершается ошибкой. В этом случае параметру Status присваивается значение PacketTooBig.

Пакет или фрагменты пакетов можно перенаправить, перенаправив узлы 128 раз, прежде чем они будут удалены. Чтобы изменить этот параметр, используйте перегрузку Sendoptions , которая принимает параметр, и присвойте 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, если оно было получено, или причину сбоя, если сообщение не было получено.

Исключения

Параметр 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);
    }
}

Комментарии

Этот метод отправляет буфер данных 32 Byte с сообщением о эхе ICMP. Метод ожидает 5 секунд ответа на эхо-сообщение ICMP. Если он не получает ответ в течение этого времени, метод возвращает значение , а свойству Status присваивается значение TimedOut.

Эта перегрузка использует параметры по умолчанию для фрагментации и пересылки пакетов. Пакет, содержащий эхо-сообщение ICMP, может быть фрагментирован при передаче, если общий размер пакета превышает максимальный размер пакета, который может быть передан одним из узлов маршрутизации между локальным и удаленным компьютерами. Чтобы предотвратить фрагментацию, используйте один из Send методов, который принимает options параметр , и задайте для свойства значение DontFragmenttrue. Если DontFragment имеет значение true и общий размер пакета превышает максимальный размер пакета, который может быть передан одним из узлов маршрутизации между локальным и удаленным компьютерами, запрос на эхо ICMP завершается ошибкой. В этом случае параметру Status присваивается значение PacketTooBig. Пакеты или фрагменты пакетов (если они фрагментированы) можно перенаправить путем маршрутизации узлов 128 раз, прежде чем они будут удалены. Чтобы изменить этот параметр, используйте перегрузку Sendoptions , которая принимает параметр, и присвойте 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, если оно было получено, или описание причины сбоя, если сообщение не было получено.

Исключения

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

Комментарии

Этот метод отправляет на узел, указанный буфером address данных 32 Byte с сообщением о эхе ICMP. Метод ожидает 5 секунд ответа на эхо-сообщение ICMP. Если он не получает ответ в течение этого времени, метод возвращает значение , а свойству Status присваивается значение TimedOut.

Эта перегрузка использует параметры по умолчанию для фрагментации и пересылки пакетов. Пакет, содержащий эхо-сообщение ICMP, может быть фрагментирован при передаче, если общий размер пакета превышает максимальный размер пакета, который может быть передан одним из узлов маршрутизации между локальным и удаленным компьютерами. Чтобы предотвратить фрагментацию, используйте один из Send методов, который принимает options параметр , и задайте для свойства значение DontFragmenttrue. Если DontFragment имеет значение true и общий размер пакета превышает максимальный размер пакета, который может быть передан одним из узлов маршрутизации между локальным и удаленным компьютерами, запрос на эхо ICMP завершается ошибкой. В этом случае параметру Status присваивается значение PacketTooBig. Пакеты или фрагменты пакетов (если они фрагментированы) можно перенаправить путем маршрутизации узлов 128 раз, прежде чем они будут удалены. Чтобы изменить этот параметр, используйте перегрузку Sendoptions , которая принимает параметр, и присвойте Ttl свойству нужное значение. Если пакет не достигает места назначения после перенаправления указанного числа раз, пакет удаляется и запрос на эхо ICMP завершается сбоем. В этом случае параметру Status присваивается значение TtlExpired.

Применяется к