Ping.SendAsync Метод

Определение

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP на компьютер и получения от него соответствующего сообщения ответа проверки связи ICMP.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message to a computer, and receive a corresponding ICMP echo reply message from that computer.

Перегрузки

SendAsync(String, Int32, Byte[], PingOptions, Object)

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP с заданным буфером данных на указанный компьютер и получения от него соответствующего сообщения ответа проверки связи ICMP.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message with the specified data buffer to the specified computer, and receive a corresponding ICMP echo reply message from that computer. Эта перегруженная версия метода позволяет указать тайм-аут операции и управлять значениями фрагментации и срока жизни пакета ICMP.This overload allows you to specify a time-out value for the operation and control fragmentation and Time-to-Live values for the ICMP packet.

SendAsync(IPAddress, Int32, Byte[], PingOptions, Object)

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP с заданным буфером данных на компьютер с указанным IPAddress и получения от него соответствующего сообщения ответа проверки связи ICMP.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message with the specified data buffer to the computer that has the specified IPAddress, and receive a corresponding ICMP echo reply message from that computer. Эта перегруженная версия метода позволяет указать тайм-аут операции и управлять значениями фрагментации и срока жизни пакета сообщения проверки связи ICMP.This overload allows you to specify a time-out value for the operation and control fragmentation and Time-to-Live values for the ICMP echo message packet.

SendAsync(String, Int32, Byte[], Object)

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP с заданным буфером данных на указанный компьютер и получения от него соответствующего сообщения ответа проверки связи ICMP.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message with the specified data buffer to the specified computer, and receive a corresponding ICMP echo reply message from that computer. Эта перегруженная версия метода позволяет указать тайм-аут операции.This overload allows you to specify a time-out value for the operation.

SendAsync(IPAddress, Int32, Byte[], Object)

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP с заданным буфером данных на компьютер с указанным IPAddress и получения от него соответствующего сообщения ответа проверки связи ICMP.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message with the specified data buffer to the computer that has the specified IPAddress, and receive a corresponding ICMP echo reply message from that computer. Эта перегруженная версия метода позволяет указать тайм-аут операции.This overload allows you to specify a time-out value for the operation.

SendAsync(IPAddress, Int32, Object)

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP на удаленный компьютер с указанным IPAddress и получения от него соответствующего сообщения ответа проверки связи ICMP.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message to the computer that has the specified IPAddress, and receive a corresponding ICMP echo reply message from that computer. Эта перегруженная версия метода позволяет указать тайм-аут операции.This overload allows you to specify a time-out value for the operation.

SendAsync(String, Object)

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP на указанный компьютер и получения от него соответствующего сообщения ответа проверки связи ICMP.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message to the specified computer, and receive a corresponding ICMP echo reply message from that computer.

SendAsync(IPAddress, Object)

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP на удаленный компьютер с указанным IPAddress и получения от него соответствующего сообщения ответа проверки связи ICMP.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message to the computer that has the specified IPAddress, and receive a corresponding ICMP echo reply message from that computer.

SendAsync(String, Int32, Object)

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP на указанный компьютер и получения от него соответствующего сообщения ответа проверки связи ICMP.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message to the specified computer, and receive a corresponding ICMP echo reply message from that computer. Эта перегруженная версия метода позволяет указать тайм-аут операции.This overload allows you to specify a time-out value for the operation.

Комментарии

Эти методы не приводят к блокировке основного потока приложения.These methods do not cause your application's main thread to block. Если вы хотите заблокировать ожидание сообщения ответа ICMP Echo, используйте методы Send.If you want to block while waiting for the ICMP echo reply message, use the Send methods.

Примечание

IP-адрес, возвращенный любым из методов SendAsync, может исходить от вредоносного удаленного компьютера.The IP address returned by any of the SendAsync methods can originate from a malicious remote computer. Не подключайтесь к удаленному компьютеру с помощью этого компонента.Do not connect to the remote computer using this. Используйте DNS для определения IP-адреса компьютера, к которому необходимо подключиться.Use DNS to determine the IP address of the machine to which you want to connect.

SendAsync(String, Int32, Byte[], PingOptions, Object)

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP с заданным буфером данных на указанный компьютер и получения от него соответствующего сообщения ответа проверки связи ICMP.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message with the specified data buffer to the specified computer, and receive a corresponding ICMP echo reply message from that computer. Эта перегруженная версия метода позволяет указать тайм-аут операции и управлять значениями фрагментации и срока жизни пакета ICMP.This overload allows you to specify a time-out value for the operation and control fragmentation and Time-to-Live values for the ICMP packet.

public:
 void SendAsync(System::String ^ hostNameOrAddress, int timeout, cli::array <System::Byte> ^ buffer, System::Net::NetworkInformation::PingOptions ^ options, System::Object ^ userToken);
public void SendAsync (string hostNameOrAddress, int timeout, byte[] buffer, System.Net.NetworkInformation.PingOptions options, object userToken);
member this.SendAsync : string * int * byte[] * System.Net.NetworkInformation.PingOptions * obj -> unit
Public Sub SendAsync (hostNameOrAddress As String, timeout As Integer, buffer As Byte(), options As PingOptions, userToken As Object)

Параметры

hostNameOrAddress
String

Объект String, идентифицирующий компьютер, на который будет отправлено данное сообщение проверки связи ICMP.A String that identifies the computer that is the destination for the ICMP echo message. Заданное для этого параметра значение может быть именем узла или строковым представлением IP-адреса.The value specified for this parameter can be a host name or a string representation of an IP address.

timeout
Int32

Значение Int32, указывающее максимальное время (после отправки сообщения проверки связи) ожидания сообщения ответа проверки связи ICMP в миллисекундах.An Int32 value that specifies the maximum number of milliseconds (after sending the echo message) to wait for the ICMP echo reply message.

buffer
Byte[]

Массив Byte, содержащие данные, отправляемые с сообщением проверки связи ICMP и возвращаемые с сообщением ответа проверки связи ICMP.A Byte array that contains data to be sent with the ICMP echo message and returned in the ICMP echo reply message. Массив не может содержать более 65 500 байт.The array cannot contain more than 65,500 bytes.

options
PingOptions

Объект PingOptions, используемый для управления значениями фрагментации и срока жизни пакета сообщения проверки связи ICMP.A PingOptions object used to control fragmentation and Time-to-Live values for the ICMP echo message packet.

userToken
Object

Объект, передаваемый в метод, вызываемый после завершении асинхронной операции.An object that is passed to the method invoked when the asynchronous operation completes.

Исключения

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

- или --or- Свойство buffer имеет значение null.buffer is null.

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

Выполняется вызов SendAsync.A call to SendAsync is in progress.

Параметр address является IPv6-адресом, а на локальном компьютере установлена операционная система более ранней версии, чем Windows 2000.address is an IPv6 address and the local computer is running an operating system earlier than Windows 2000.

Возникло исключение при отправке или получении сообщений ICMP.An exception was thrown while sending or receiving the ICMP messages. Чтобы узнать, какое именно исключение возникло, обратитесь ко внутреннему исключению.See the inner exception for the exact exception that was thrown.

Параметр hostNameOrAddress не удалось разрешить в допустимый IP-адрес.hostNameOrAddress could not be resolved to a valid IP address.

Данный объект удален.This object has been disposed.

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

Примеры

В следующем примере кода показано, как вызвать этот метод.The following code example demonstrates how to call this method.

#using <System.dll>

using namespace System;
using namespace System::Text;
using namespace System::Net;
using namespace System::Net::NetworkInformation;
using namespace System::ComponentModel;
using namespace System::Threading;
void PingCompletedCallback( Object^ sender, PingCompletedEventArgs^ e );
void DisplayReply( PingReply^ reply );
int main()
{
   array<String^>^args = Environment::GetCommandLineArgs();
   if ( args->Length == 1 )
      throw gcnew ArgumentException( "Ping needs a host or IP Address." );

   String^ who = args[ 1 ];
   AutoResetEvent^ waiter = gcnew AutoResetEvent( false );
   
   Ping ^ pingSender = gcnew Ping;
   
   // When the PingCompleted event is raised,
   // the PingCompletedCallback method is called.
   pingSender->PingCompleted += gcnew PingCompletedEventHandler( PingCompletedCallback );
   
   // Create a buffer of 32 bytes of data to be transmitted.
   String^ data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
   array<Byte>^buffer = Encoding::ASCII->GetBytes( data );
   
   // Wait 12 seconds for a reply.
   int timeout = 12000;
   
   // 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 );
   Console::WriteLine( "Time to live: {0}", options->Ttl );
   Console::WriteLine( "Don't fragment: {0}", options->DontFragment );
   
   // Send the ping asynchronously.
   // Use the waiter as the user token.
   // When the callback completes, it can wake up this thread.
   pingSender->SendAsync( who, timeout, buffer, options, waiter );
   
   // Prevent this example application from ending.
   // A real application should do something useful
   // when possible.
   waiter->WaitOne();
   Console::WriteLine( "Ping example completed." );
}


void PingCompletedCallback( Object^ /*sender*/, PingCompletedEventArgs^ e )
{
   
   // If the operation was canceled, display a message to the user.
   if ( e->Cancelled )
   {
      Console::WriteLine( "Ping canceled." );
      
      // Let the main thread resume. 
      // UserToken is the AutoResetEvent object that the main thread 
      // is waiting for.
      (dynamic_cast<AutoResetEvent^>(e->UserState))->Set();
   }

   
   // If an error occurred, display the exception to the user.
   if ( e->Error != nullptr )
   {
      Console::WriteLine( "Ping failed:" );
      Console::WriteLine( e->Error->ToString() );
      
      // Let the main thread resume. 
      (dynamic_cast<AutoResetEvent^>(e->UserState))->Set();
   }

   PingReply ^ reply = e->Reply;
   DisplayReply( reply );
   
   // Let the main thread resume.
   (dynamic_cast<AutoResetEvent^>(e->UserState))->Set();
}


void DisplayReply( PingReply ^ reply )
{
   if ( reply == nullptr )
      return;

   Console::WriteLine( "ping status: {0}", reply->Status );
   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 );
   }
}

using System;
using System.Text;
using System.Net;
using System.Net.NetworkInformation;
using System.ComponentModel;
using System.Threading;

namespace Examples.System.Net.NetworkInformation.PingTest
{
    public class PingExample
    {
        public static void Main (string[] args)
        {
            if (args.Length == 0)
                throw new ArgumentException ("Ping needs a host or IP Address.");

            string who = args[0];
            AutoResetEvent waiter = new AutoResetEvent (false);

            Ping pingSender = new Ping ();

            // When the PingCompleted event is raised,
            // the PingCompletedCallback method is called.
            pingSender.PingCompleted += new PingCompletedEventHandler (PingCompletedCallback);

            // Create a buffer of 32 bytes of data to be transmitted.
            string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
            byte[] buffer = Encoding.ASCII.GetBytes (data);

            // Wait 12 seconds for a reply.
            int timeout = 12000;

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

            Console.WriteLine ("Time to live: {0}", options.Ttl);
            Console.WriteLine ("Don't fragment: {0}", options.DontFragment);

            // Send the ping asynchronously.
            // Use the waiter as the user token.
            // When the callback completes, it can wake up this thread.
            pingSender.SendAsync(who, timeout, buffer, options, waiter);

            // Prevent this example application from ending.
            // A real application should do something useful
            // when possible.
            waiter.WaitOne ();
            Console.WriteLine ("Ping example completed.");
        }

        private static void PingCompletedCallback (object sender, PingCompletedEventArgs e)
        {
            // If the operation was canceled, display a message to the user.
            if (e.Cancelled)
            {
                Console.WriteLine ("Ping canceled.");

                // Let the main thread resume. 
                // UserToken is the AutoResetEvent object that the main thread 
                // is waiting for.
                ((AutoResetEvent)e.UserState).Set ();
            }

            // If an error occurred, display the exception to the user.
            if (e.Error != null)
            {
                Console.WriteLine ("Ping failed:");
                Console.WriteLine (e.Error.ToString ());

                // Let the main thread resume. 
                ((AutoResetEvent)e.UserState).Set();
            }

            PingReply reply = e.Reply;

            DisplayReply (reply);

            // Let the main thread resume.
            ((AutoResetEvent)e.UserState).Set();
        }

        public static void DisplayReply (PingReply reply)
        {
            if (reply == null)
                return;

            Console.WriteLine ("ping status: {0}", reply.Status);
            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);
            }
        }
    }
}

Комментарии

Метод SendAsync отправляет Эхо-сообщение асинхронно и, когда операция завершается (успешно или неуспешно), возвращает состояние приложению.The SendAsync method sends the Echo message asynchronously and, when the operation completes (successfully or unsuccessfully), returns the status to your application. Вызовите метод SendAsync, если приложение не должно блокироваться.Call the SendAsync method when your application must not block. Каждый вызов выполняется в отдельном потоке, который автоматически выделяется из пула потоков.Each call executes in a separate thread that is automatically allocated from the thread pool. По завершении асинхронной операции она вызывает событие PingCompleted.When the asynchronous operation completes, it raises the PingCompleted event. Приложения используют делегат PingCompletedEventHandler, чтобы указать метод, который вызывается, когда SendAsync вызывает событие.Applications use a PingCompletedEventHandler delegate to specify the method that is called when SendAsync raises the event. Перед вызовом SendAsyncнеобходимо добавить делегат PingCompletedEventHandler в событие.You must add a PingCompletedEventHandler delegate to the event before calling SendAsync. Метод делегата получает объект PingCompletedEventArgs, содержащий объект PingReply, который описывает результат вызова SendAsync.The delegate's method receives a PingCompletedEventArgs object that contains a PingReply object that describes the result of the SendAsync call. Объект PingCompletedEventArgs наследует свойство UserState.The PingCompletedEventArgs object inherits the UserState property. Это свойство содержит объект userToken, переданный в вызов SendAsync.This property contains the userToken object passed into the SendAsync call.

Если приложение должно блокироваться во время ожидания ответа, используйте методы Send. Эти методы являются синхронными.If your application should block while waiting for a reply, use the Send methods; these methods are synchronous.

Если сообщение ICMP эхо-ответа не получено в течение времени, указанного параметром timeout, эхо ICMP не выполняется, а свойство Status имеет значение TimedOut.If the ICMP echo reply message is not received within the time specified by the timeout parameter, the ICMP echo fails, and the Status property is set to TimedOut.

Примечание

При указании очень маленьких чисел для timeoutответ на запрос проверки связи можно получить, даже если истечет timeout миллисекунд.When specifying very small numbers for timeout, the Ping reply can be received even if timeout milliseconds have elapsed.

Если свойство DontFragment true, а общий размер пакета превышает максимальный размер пакета, который может быть передан одним из узлов маршрутизации между локальным и удаленным компьютерами, то запрос проверки связи ICMP завершается сбоем.If the DontFragment property is true and the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers, the ICMP echo request fails. В этом случае для Status устанавливается значение PacketTooBig.When this happens, the Status is set to PacketTooBig.

Используйте свойство Ttl, чтобы указать максимальное число попыток переадресации сообщения проверки связи ICMP перед достижением места назначения.Use the Ttl property to specify the maximum number of times the ICMP echo message can be forwarded before reaching its destination. Если пакет не достигает места назначения после пересылки указанного числа раз, пакет отбрасывается и запрос проверки связи ICMP завершается сбоем.If the packet does not reach its destination after being forwarded the specified number of times, the packet is discarded and the ICMP echo request fails. В этом случае для Status устанавливается значение TtlExpired.When this happens, the Status is set to TtlExpired.

Безопасность

NetworkInformationPermission
Для отправки сообщения проверки связи ICMP.To send an ICMP echo message. Связанное перечисление: PingAssociated enumeration: Ping

SendAsync(IPAddress, Int32, Byte[], PingOptions, Object)

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP с заданным буфером данных на компьютер с указанным IPAddress и получения от него соответствующего сообщения ответа проверки связи ICMP.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message with the specified data buffer to the computer that has the specified IPAddress, and receive a corresponding ICMP echo reply message from that computer. Эта перегруженная версия метода позволяет указать тайм-аут операции и управлять значениями фрагментации и срока жизни пакета сообщения проверки связи ICMP.This overload allows you to specify a time-out value for the operation and control fragmentation and Time-to-Live values for the ICMP echo message packet.

public:
 void SendAsync(System::Net::IPAddress ^ address, int timeout, cli::array <System::Byte> ^ buffer, System::Net::NetworkInformation::PingOptions ^ options, System::Object ^ userToken);
public void SendAsync (System.Net.IPAddress address, int timeout, byte[] buffer, System.Net.NetworkInformation.PingOptions options, object userToken);
member this.SendAsync : System.Net.IPAddress * int * byte[] * System.Net.NetworkInformation.PingOptions * obj -> unit
Public Sub SendAsync (address As IPAddress, timeout As Integer, buffer As Byte(), options As PingOptions, userToken As Object)

Параметры

address
IPAddress

Объект IPAddress, идентифицирующий компьютер, на который будет направлено данное сообщение проверки связи ICMP.An IPAddress that identifies the computer that is the destination for the ICMP echo message.

timeout
Int32

Значение Int32, указывающее максимальное время (после отправки сообщения проверки связи) ожидания сообщения ответа проверки связи ICMP в миллисекундах.An Int32 value that specifies the maximum number of milliseconds (after sending the echo message) to wait for the ICMP echo reply message.

buffer
Byte[]

Массив Byte, содержащие данные, отправляемые с сообщением проверки связи ICMP и возвращаемые с сообщением ответа проверки связи ICMP.A Byte array that contains data to be sent with the ICMP echo message and returned in the ICMP echo reply message. Массив не может содержать более 65 500 байт.The array cannot contain more than 65,500 bytes.

options
PingOptions

Объект PingOptions, используемый для управления значениями фрагментации и срока жизни пакета сообщения проверки связи ICMP.A PingOptions object used to control fragmentation and Time-to-Live values for the ICMP echo message packet.

userToken
Object

Объект, передаваемый в метод, вызываемый после завершении асинхронной операции.An object that is passed to the method invoked when the asynchronous operation completes.

Исключения

addressnull.address is null.

- или --or- Свойство buffer имеет значение null.buffer is null.

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

Выполняется вызов SendAsync.A call to SendAsync is in progress.

Параметр address является IPv6-адресом, а на локальном компьютере установлена операционная система более ранней версии, чем Windows 2000.address is an IPv6 address and the local computer is running an operating system earlier than Windows 2000.

Возникло исключение при отправке или получении сообщений ICMP.An exception was thrown while sending or receiving the ICMP messages. Чтобы узнать, какое именно исключение возникло, обратитесь ко внутреннему исключению.See the inner exception for the exact exception that was thrown.

address не является допустимым IP-адресом.address is not a valid IP address.

Данный объект удален.This object has been disposed.

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

Примеры

В следующем примере кода показано, как вызвать этот метод.The following code example demonstrates how to call this method. Сведения о реализации метода обратного вызова см. в разделе Пример перегрузки метода SendAsync.For an implementation of the callback method, see the SendAsync method overload example section.

Для следующего примера кода требуются следующие пространства имен:The following code example requires the following namespaces:

#using <System.dll>

using namespace System;
using namespace System::Net;
using namespace System::Net::NetworkInformation;
using namespace System::Text;
using namespace System::Threading;

using System;
using System.Net;
using System.Net.NetworkInformation;
using System.Text;
using System.Threading;

В следующем примере кода Эхо-сообщение ICMP отправляется асинхронно.The following code example sends an ICMP echo message asynchronously.

void AsyncComplexLocalPing()
{
   
   // Get an object that will block the main thread.
   AutoResetEvent^ waiter = gcnew AutoResetEvent( false );
   
   // Ping's the local machine.
   Ping ^ pingSender = gcnew Ping;
   
   // When the PingCompleted event is raised,
   // the PingCompletedCallback method is called.
   pingSender->PingCompleted += gcnew PingCompletedEventHandler( PingCompletedCallback );
   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 );
   
   // Send the ping asynchronously.
   // Use the waiter as the user token.
   // When the callback completes, it can wake up this thread.
   pingSender->SendAsync( address, timeout, buffer, options, waiter );
   
   // Prevent this example application from ending.
   // A real application should do something useful
   // when possible.
   waiter->WaitOne();
   Console::WriteLine( "Ping example completed." );
}


public static void AsyncComplexLocalPing ()
{
    // Get an object that will block the main thread.
    AutoResetEvent waiter = new AutoResetEvent (false);

    // Ping's the local machine.
    Ping pingSender = new Ping ();

    // When the PingCompleted event is raised,
    // the PingCompletedCallback method is called.
    pingSender.PingCompleted += new PingCompletedEventHandler (PingCompletedCallback);

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

    // Send the ping asynchronously.
    // Use the waiter as the user token.
    // When the callback completes, it can wake up this thread.
    pingSender.SendAsync (address, timeout, buffer, options, waiter);

    // Prevent this example application from ending.
    // A real application should do something useful
    // when possible.
    waiter.WaitOne ();
    Console.WriteLine ("Ping example completed.");
}

Комментарии

Метод SendAsync отправляет Эхо-сообщение асинхронно и, когда операция завершается (успешно или неуспешно), возвращает состояние приложению.The SendAsync method sends the Echo message asynchronously and, when the operation completes (successfully or unsuccessfully), returns the status to your application. Вызовите метод SendAsync, если приложение не должно блокироваться.Call the SendAsync method when your application must not block. Каждый вызов выполняется в отдельном потоке, который автоматически выделяется из пула потоков.Each call executes in a separate thread that is automatically allocated from the thread pool. По завершении асинхронной операции она вызывает событие PingCompleted.When the asynchronous operation completes, it raises the PingCompleted event. Приложения используют делегат PingCompletedEventHandler, чтобы указать метод, который вызывается, когда SendAsync вызывает событие.Applications use a PingCompletedEventHandler delegate to specify the method that is called when SendAsync raises the event. Перед вызовом SendAsyncнеобходимо добавить делегат PingCompletedEventHandler в событие.You must add a PingCompletedEventHandler delegate to the event before calling SendAsync. Метод делегата получает объект PingCompletedEventArgs, содержащий объект PingReply, который описывает результат вызова SendAsync.The delegate's method receives a PingCompletedEventArgs object that contains a PingReply object that describes the result of the SendAsync call. Объект PingCompletedEventArgs наследует свойство UserState.The PingCompletedEventArgs object inherits the UserState property. Это свойство содержит объект userToken, переданный в вызов SendAsync.This property contains the userToken object passed into the SendAsync call.

Если приложение блокируется во время ожидания ответа, используйте методы Send. Эти методы являются синхронными.If your application blocks while waiting for a reply, use the Send methods; these methods are synchronous.

Если сообщение ICMP эхо-ответа не получено в течение времени, указанного параметром timeout, эхо ICMP не выполняется, а свойство Status имеет значение TimedOut.If the ICMP echo reply message is not received within the time specified by the timeout parameter, the ICMP echo fails, and the Status property is set to TimedOut.

Примечание

При указании очень маленьких чисел для timeoutответ на запрос проверки связи можно получить, даже если истечет timeout миллисекунд.When specifying very small numbers for timeout, the Ping reply can be received even if timeout milliseconds have elapsed.

Если свойство DontFragment true, а общий размер пакета превышает максимальный размер пакета, который может быть передан одним из узлов маршрутизации между локальным и удаленным компьютерами, то запрос проверки связи ICMP завершается сбоем.If the DontFragment property is true and the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers, the ICMP echo request fails. В этом случае для Status устанавливается значение PacketTooBig.When this happens, the Status is set to PacketTooBig.

Используйте свойство Ttl, чтобы указать максимальное число попыток переадресации сообщения проверки связи ICMP перед достижением места назначения.Use the Ttl property to specify the maximum number of times the ICMP echo message can be forwarded before reaching its destination. Если пакет не достигает места назначения после пересылки указанного числа раз, пакет отбрасывается и запрос проверки связи ICMP завершается сбоем.If the packet does not reach its destination after being forwarded the specified number of times, the packet is discarded and the ICMP echo request fails. В этом случае для Status устанавливается значение TtlExpired.When this happens, the Status is set to TtlExpired.

Безопасность

NetworkInformationPermission
Для отправки сообщения проверки связи ICMP.To send an ICMP echo message. Связанное перечисление: PingAssociated enumeration: Ping

SendAsync(String, Int32, Byte[], Object)

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP с заданным буфером данных на указанный компьютер и получения от него соответствующего сообщения ответа проверки связи ICMP.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message with the specified data buffer to the specified computer, and receive a corresponding ICMP echo reply message from that computer. Эта перегруженная версия метода позволяет указать тайм-аут операции.This overload allows you to specify a time-out value for the operation.

public:
 void SendAsync(System::String ^ hostNameOrAddress, int timeout, cli::array <System::Byte> ^ buffer, System::Object ^ userToken);
public void SendAsync (string hostNameOrAddress, int timeout, byte[] buffer, object userToken);
member this.SendAsync : string * int * byte[] * obj -> unit
Public Sub SendAsync (hostNameOrAddress As String, timeout As Integer, buffer As Byte(), userToken As Object)

Параметры

hostNameOrAddress
String

Объект String, идентифицирующий компьютер, на который будет отправлено данное сообщение проверки связи ICMP.A String that identifies the computer that is the destination for the ICMP echo message. Заданное для этого параметра значение может быть именем узла или строковым представлением IP-адреса.The value specified for this parameter can be a host name or a string representation of an IP address.

timeout
Int32

Значение Int32, указывающее максимальное время (после отправки сообщения проверки связи) ожидания сообщения ответа проверки связи ICMP в миллисекундах.An Int32 value that specifies the maximum number of milliseconds (after sending the echo message) to wait for the ICMP echo reply message.

buffer
Byte[]

Массив Byte, содержащие данные, отправляемые с сообщением проверки связи ICMP и возвращаемые с сообщением ответа проверки связи ICMP.A Byte array that contains data to be sent with the ICMP echo message and returned in the ICMP echo reply message. Массив не может содержать более 65 500 байт.The array cannot contain more than 65,500 bytes.

userToken
Object

Объект, передаваемый в метод, вызываемый после завершении асинхронной операции.An object that is passed to the method invoked when the asynchronous operation completes.

Исключения

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

- или --or- Свойство buffer имеет значение null.buffer is null.

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

Выполняется вызов SendAsync.A call to SendAsync is in progress.

Параметр hostNameOrAddress является IPv6-адресом, а на локальном компьютере установлена операционная система более ранней версии, чем Windows 2000.hostNameOrAddress is an IPv6 address and the local computer is running an operating system earlier than Windows 2000.

Возникло исключение при отправке или получении сообщений ICMP.An exception was thrown while sending or receiving the ICMP messages. Чтобы узнать, какое именно исключение возникло, обратитесь ко внутреннему исключению.See the inner exception for the exact exception that was thrown.

Параметр hostNameOrAddress не удалось разрешить в допустимый IP-адрес.hostNameOrAddress could not be resolved to a valid IP address.

Данный объект удален.This object has been disposed.

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

Примеры

В следующем примере кода показано, как вызвать перегрузку SendAsync, см. Общие сведения о классе Ping.The following code example demonstrates how to call a SendAsync overload, see the Ping class overview.

Комментарии

Метод SendAsync отправляет Эхо-сообщение асинхронно и, когда операция завершается (успешно или неуспешно), возвращает состояние приложению.The SendAsync method sends the Echo message asynchronously and, when the operation completes (successfully or unsuccessfully), returns the status to your application. Вызовите метод SendAsync, если приложение не должно блокироваться.Call the SendAsync method when your application should not block. Каждый вызов выполняется в отдельном потоке, который автоматически выделяется из пула потоков.Each call executes in a separate thread that is automatically allocated from the thread pool. По завершении асинхронной операции она вызывает событие PingCompleted.When the asynchronous operation completes, it raises the PingCompleted event. Приложения используют делегат PingCompletedEventHandler, чтобы указать метод, который вызывается, когда SendAsync вызывает событие.Applications use a PingCompletedEventHandler delegate to specify the method that is called when SendAsync raises the event. Перед вызовом SendAsyncнеобходимо добавить делегат PingCompletedEventHandler в событие.You must add a PingCompletedEventHandler delegate to the event before calling SendAsync. Метод делегата получает объект PingCompletedEventArgs, содержащий объект PingReply, который описывает результат вызова SendAsync.The delegate's method receives a PingCompletedEventArgs object containing a PingReply object that describes the result of the SendAsync call. Объект PingCompletedEventArgs наследует свойство UserState.The PingCompletedEventArgs object inherits the UserState property. Это свойство содержит объект userToken, переданный в вызов SendAsync.This property contains the userToken object passed into the SendAsync call.

Если приложение должно блокироваться во время ожидания ответа, используйте методы Send. Эти методы являются синхронными.If your application should block while waiting for a reply, use the Send methods; these methods are synchronous.

Если сообщение ICMP эхо-ответа не получено в течение времени, указанного параметром timeout, эхо ICMP не выполняется, а свойство Status имеет значение TimedOut.If the ICMP echo reply message is not received within the time specified by the timeout parameter, the ICMP echo fails, and the Status property is set to TimedOut.

Примечание

При указании очень маленьких чисел для timeoutответ на запрос проверки связи можно получить, даже если истечет timeout миллисекунд.When specifying very small numbers for timeout, the Ping reply can be received even if timeout milliseconds have elapsed.

Эта перегрузка использует параметры по умолчанию для фрагментации пакетов и пересылки пакетов.This overload uses default settings for packet fragmentation and packet forwarding. Пакет, содержащий Эхо-сообщение ICMP, может быть фрагментирован при передаче, если общий размер пакета превышает максимальный размер пакета, который может быть передан одним из узлов маршрутизации между локальным и удаленным компьютерами.The packet that contains the ICMP echo message can be fragmented in transit if the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers. Чтобы предотвратить фрагментацию, используйте один из SendAsync методов, принимающих параметр options, и задайте для свойства DontFragment значение true.To prevent fragmentation, use one of the SendAsync methods that takes an options parameter, and set the DontFragment property to true. Если DontFragment true, а общий размер пакета превышает максимальный размер пакета, который может быть передан одним из узлов маршрутизации между локальным и удаленным компьютерами, запрос проверки связи ICMP завершается сбоем.When DontFragment is true and the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers, the ICMP echo request fails. В этом случае для Status устанавливается значение PacketTooBig.When this happens, the Status is set to PacketTooBig. Фрагменты пакетов или пакетов (если они фрагментированы) могут перенаправляться узлами маршрутизации 128 раз, прежде чем они будут удалены.The packet or packet fragments (if fragmented) can be forwarded by routing nodes 128 times before being discarded. Чтобы изменить этот параметр, используйте перегрузку SendAsync, которая принимает параметр options, и присвойте свойству Ttl нужное значение.To change this setting, use a SendAsync overload that takes an options parameter, and set the Ttl property to the desired value. Если пакет не достигает места назначения после пересылки указанного числа раз, пакет отбрасывается и запрос проверки связи ICMP завершается сбоем.If the packet does not reach its destination after being forwarded the specified number of times, the packet is discarded and the ICMP echo request fails. В этом случае для Status устанавливается значение TtlExpired.When this happens, the Status is set to TtlExpired.

Безопасность

NetworkInformationPermission
Для отправки сообщения проверки связи ICMP.To send an ICMP echo message. Связанное перечисление: PingAssociated enumeration: Ping

SendAsync(IPAddress, Int32, Byte[], Object)

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP с заданным буфером данных на компьютер с указанным IPAddress и получения от него соответствующего сообщения ответа проверки связи ICMP.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message with the specified data buffer to the computer that has the specified IPAddress, and receive a corresponding ICMP echo reply message from that computer. Эта перегруженная версия метода позволяет указать тайм-аут операции.This overload allows you to specify a time-out value for the operation.

public:
 void SendAsync(System::Net::IPAddress ^ address, int timeout, cli::array <System::Byte> ^ buffer, System::Object ^ userToken);
public void SendAsync (System.Net.IPAddress address, int timeout, byte[] buffer, object userToken);
member this.SendAsync : System.Net.IPAddress * int * byte[] * obj -> unit
Public Sub SendAsync (address As IPAddress, timeout As Integer, buffer As Byte(), userToken As Object)

Параметры

address
IPAddress

Объект IPAddress, идентифицирующий компьютер, на который будет направлено данное сообщение проверки связи ICMP.An IPAddress that identifies the computer that is the destination for the ICMP echo message.

timeout
Int32

Значение Int32, указывающее максимальное время (после отправки сообщения проверки связи) ожидания сообщения ответа проверки связи ICMP в миллисекундах.An Int32 value that specifies the maximum number of milliseconds (after sending the echo message) to wait for the ICMP echo reply message.

buffer
Byte[]

Массив Byte, содержащие данные, отправляемые с сообщением проверки связи ICMP и возвращаемые с сообщением ответа проверки связи ICMP.A Byte array that contains data to be sent with the ICMP echo message and returned in the ICMP echo reply message. Массив не может содержать более 65 500 байт.The array cannot contain more than 65,500 bytes.

userToken
Object

Объект, передаваемый в метод, вызываемый после завершении асинхронной операции.An object that is passed to the method invoked when the asynchronous operation completes.

Исключения

Свойство address имеет значение null.address is null.

- или --or- Свойство buffer имеет значение null.buffer is null.

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

Выполняется вызов SendAsync.A call to SendAsync is in progress.

Параметр address является IPv6-адресом, а на локальном компьютере установлена операционная система более ранней версии, чем Windows 2000.address is an IPv6 address and the local computer is running an operating system earlier than Windows 2000.

Возникло исключение при отправке или получении сообщений ICMP.An exception was thrown while sending or receiving the ICMP messages. Чтобы узнать, какое именно исключение возникло, обратитесь ко внутреннему исключению.See the inner exception for the exact exception that was thrown.

address не является допустимым IP-адресом.address is not a valid IP address.

Данный объект удален.This object has been disposed.

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

Примеры

Пример кода, демонстрирующий вызов перегрузки SendAsync, см. в разделе Общие сведения о классе Ping.For a code example that demonstrates calling a SendAsync overload, see the Ping class overview.

Комментарии

Этот метод асинхронно отправляет Эхо-сообщение и, когда операция завершается (успешно или неуспешно), возвращает состояние приложению.This method sends the echo message asynchronously and, when the operation completes (successfully or unsuccessfully), returns the status to your application. Вызовите метод SendAsync, если приложение не должно блокироваться.Call the SendAsync method when your application should not block. Каждый вызов выполняется в отдельном потоке, который автоматически выделяется из пула потоков.Each call executes in a separate thread that is automatically allocated from the thread pool. По завершении асинхронной операции она вызывает событие PingCompleted.When the asynchronous operation completes, it raises the PingCompleted event. Чтобы указать метод, вызываемый при SendAsync вызове события, необходимо добавить делегат PingCompletedEventHandler в событие перед вызовом SendAsync.To specify the method that is called when SendAsync raises the event, you must add a PingCompletedEventHandler delegate to the event before calling SendAsync. Метод делегата получает объект PingCompletedEventArgs, содержащий объект PingReply, который описывает результат вызова SendAsync.The delegate's method receives a PingCompletedEventArgs object that contains a PingReply object that describes the result of the SendAsync call. Объект PingCompletedEventArgs наследует свойство UserState.The PingCompletedEventArgs object inherits the UserState property. Это свойство содержит объект userToken, переданный в вызов SendAsync.This property contains the userToken object passed into the SendAsync call.

Примечание

Если приложение блокируется во время ожидания ответа, используйте методы Send. Эти методы являются синхронными.If your application blocks while waiting for a reply, use the Send methods; these methods are synchronous.

Если сообщение ICMP эхо-ответа не получено в течение времени, указанного параметром timeout, эхо ICMP не выполняется, а свойство Status имеет значение TimedOut.If the ICMP echo reply message is not received within the time specified by the timeout parameter, the ICMP echo fails, and the Status property is set to TimedOut.

Примечание

При указании очень маленьких чисел для timeoutответ на запрос проверки связи можно получить, даже если истечет timeout миллисекунд.When specifying very small numbers for timeout, the Ping reply can be received even if timeout milliseconds have elapsed.

Эта перегрузка использует параметры по умолчанию для фрагментации пакетов и пересылки пакетов.This overload uses default settings for packet fragmentation and packet forwarding. Пакет, содержащий Эхо-сообщение ICMP, может быть фрагментирован при передаче, если общий размер пакета превышает максимальный размер пакета, который может быть передан одним из узлов маршрутизации между локальным и удаленным компьютерами.The packet that contains the ICMP echo message can be fragmented in transit if the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers. Чтобы предотвратить фрагментацию, используйте один из SendAsync методов, принимающих параметр options, и задайте для свойства DontFragment значение true.To prevent fragmentation, use one of the SendAsync methods that takes an options parameter, and set the DontFragment property to true. Если DontFragment true, а общий размер пакета превышает максимальный размер пакета, который может быть передан одним из узлов маршрутизации между локальным и удаленным компьютерами, запрос проверки связи ICMP завершается сбоем.When DontFragment is true and the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers, the ICMP echo request fails. В этом случае для Status устанавливается значение PacketTooBig.When this happens, the Status is set to PacketTooBig. Фрагменты пакетов или пакетов (если они фрагментированы) могут перенаправляться узлами маршрутизации 128 раз, прежде чем они будут удалены.The packet or packet fragments (if fragmented) can be forwarded by routing nodes 128 times before being discarded. Чтобы изменить этот параметр, используйте перегрузку SendAsync, которая принимает параметр options, и присвойте свойству Ttl нужное значение.To change this setting, use a SendAsync overload that takes an options parameter, and set the Ttl property to the desired value. Если пакет не достигает места назначения после пересылки указанного числа раз, пакет отбрасывается и запрос проверки связи ICMP завершается сбоем.If the packet does not reach its destination after being forwarded the specified number of times, the packet is discarded and the ICMP echo request fails. В этом случае для Status устанавливается значение TtlExpired.When this happens, the Status is set to TtlExpired.

Безопасность

NetworkInformationPermission
Для отправки сообщения проверки связи ICMP.To send an ICMP echo message. Связанное перечисление: PingAssociated enumeration: Ping

SendAsync(IPAddress, Int32, Object)

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP на удаленный компьютер с указанным IPAddress и получения от него соответствующего сообщения ответа проверки связи ICMP.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message to the computer that has the specified IPAddress, and receive a corresponding ICMP echo reply message from that computer. Эта перегруженная версия метода позволяет указать тайм-аут операции.This overload allows you to specify a time-out value for the operation.

public:
 void SendAsync(System::Net::IPAddress ^ address, int timeout, System::Object ^ userToken);
public void SendAsync (System.Net.IPAddress address, int timeout, object userToken);
member this.SendAsync : System.Net.IPAddress * int * obj -> unit
Public Sub SendAsync (address As IPAddress, timeout As Integer, userToken As Object)

Параметры

address
IPAddress

Объект IPAddress, идентифицирующий компьютер, на который будет направлено данное сообщение проверки связи ICMP.An IPAddress that identifies the computer that is the destination for the ICMP echo message.

timeout
Int32

Значение Int32, указывающее максимальное время (после отправки сообщения проверки связи) ожидания сообщения ответа проверки связи ICMP в миллисекундах.An Int32 value that specifies the maximum number of milliseconds (after sending the echo message) to wait for the ICMP echo reply message.

userToken
Object

Объект, передаваемый в метод, вызываемый после завершении асинхронной операции.An object that is passed to the method invoked when the asynchronous operation completes.

Исключения

Свойство address имеет значение null.address is null.

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

Выполняется вызов метода SendAsync(IPAddress, Int32, Byte[], Object).A call to SendAsync(IPAddress, Int32, Byte[], Object) method is in progress.

Параметр address является IPv6-адресом, а на локальном компьютере установлена операционная система более ранней версии, чем Windows 2000.address is an IPv6 address and the local computer is running an operating system earlier than Windows 2000.

Возникло исключение при отправке или получении сообщений ICMP.An exception was thrown while sending or receiving the ICMP messages. Чтобы узнать, какое именно исключение возникло, обратитесь ко внутреннему исключению.See the inner exception for the exact exception that was thrown.

address не является допустимым IP-адресом.address is not a valid IP address.

Данный объект удален.This object has been disposed.

Примеры

Пример кода, демонстрирующий вызов перегрузки SendAsync, см. в разделе Общие сведения о классе Ping.For a code example that demonstrates calling a SendAsync overload, see the Ping class overview.

Комментарии

Метод SendAsync отправляет Эхо-сообщение асинхронно и, когда операция завершается (успешно или неуспешно), возвращает состояние приложению.The SendAsync method sends the Echo message asynchronously and, when the operation completes (successfully or unsuccessfully), returns the status to your application. Вызовите метод SendAsync, если приложение не должно блокироваться.Call the SendAsync method when your application should not block. Каждый вызов выполняется в отдельном потоке, который автоматически выделяется из пула потоков.Each call executes in a separate thread that is automatically allocated from the thread pool. По завершении асинхронной операции она вызывает событие PingCompleted.When the asynchronous operation completes, it raises the PingCompleted event. Приложения используют делегат PingCompletedEventHandler, чтобы указать метод, который вызывается, когда SendAsync вызывает событие.Applications use a PingCompletedEventHandler delegate to specify the method that is called when SendAsync raises the event. Перед вызовом SendAsyncнеобходимо добавить делегат PingCompletedEventHandler в событие.You must add a PingCompletedEventHandler delegate to the event before calling SendAsync. Метод делегата получает объект PingCompletedEventArgs, содержащий объект PingReply, который описывает результат вызова SendAsync.The delegate's method receives a PingCompletedEventArgs object that contains a PingReply object that describes the result of the SendAsync call. Объект PingCompletedEventArgs наследует свойство UserState.The PingCompletedEventArgs object inherits the UserState property. Это свойство содержит объект userToken, переданный в вызов SendAsync.This property contains the userToken object passed into the SendAsync call.

Если приложение должно блокироваться во время ожидания ответа, используйте методы Send. Эти методы являются синхронными.If your application should block while waiting for a reply, use the Send methods; these methods are synchronous.

Если сообщение ICMP эхо-ответа не получено в течение времени, указанного параметром timeout, эхо ICMP не выполняется, а свойство Status имеет значение TimedOut.If the ICMP echo reply message is not received within the time specified by the timeout parameter, the ICMP echo fails, and the Status property is set to TimedOut.

Примечание

При указании очень маленьких чисел для timeoutответ на запрос проверки связи можно получить, даже если истечет timeout миллисекунд.When specifying very small numbers for timeout, the Ping reply can be received even if timeout milliseconds have elapsed.

Эта перегрузка использует параметры по умолчанию для фрагментации пакетов и пересылки пакетов.This overload uses default settings for packet fragmentation and packet forwarding. Пакет, содержащий Эхо-сообщение ICMP, может быть фрагментирован при передаче, если общий размер пакета превышает максимальный размер пакета, который может быть передан одним из узлов маршрутизации между локальным и удаленным компьютерами.The packet that contains the ICMP echo message can be fragmented in transit if the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers. Чтобы предотвратить фрагментацию, используйте один из SendAsync методов, принимающих параметр options, и задайте для свойства DontFragment значение true.To prevent fragmentation, use one of the SendAsync methods that takes an options parameter, and set the DontFragment property to true. Если DontFragment true, а общий размер пакета превышает максимальный размер пакета, который может быть передан одним из узлов маршрутизации между локальным и удаленным компьютерами, запрос проверки связи ICMP завершается сбоем.When DontFragment is true and the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers, the ICMP echo request fails. В этом случае для Status устанавливается значение PacketTooBig.When this happens, the Status is set to PacketTooBig. Фрагменты пакетов или пакетов (если они фрагментированы) могут перенаправляться узлами маршрутизации 128 раз, прежде чем они будут удалены.The packet or packet fragments (if fragmented) can be forwarded by routing nodes 128 times before being discarded. Чтобы изменить этот параметр, используйте перегрузку SendAsync, которая принимает параметр options, и присвойте свойству Ttl нужное значение.To change this setting, use a SendAsync overload that takes an options parameter, and set the Ttl property to the desired value. Если пакет не достигает места назначения после пересылки указанного числа раз, пакет отбрасывается и запрос проверки связи ICMP завершается сбоем.If the packet does not reach its destination after being forwarded the specified number of times, the packet is discarded and the ICMP echo request fails. В этом случае для Status устанавливается значение TtlExpired.When this happens, the Status is set to TtlExpired.

Безопасность

NetworkInformationPermission
Для отправки сообщения проверки связи ICMP.To send an ICMP echo message. Связанное перечисление: PingAssociated enumeration: Ping

SendAsync(String, Object)

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP на указанный компьютер и получения от него соответствующего сообщения ответа проверки связи ICMP.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message to the specified computer, and receive a corresponding ICMP echo reply message from that computer.

public:
 void SendAsync(System::String ^ hostNameOrAddress, System::Object ^ userToken);
public void SendAsync (string hostNameOrAddress, object userToken);
member this.SendAsync : string * obj -> unit
Public Sub SendAsync (hostNameOrAddress As String, userToken As Object)

Параметры

hostNameOrAddress
String

Объект String, идентифицирующий компьютер, на который будет отправлено данное сообщение проверки связи ICMP.A String that identifies the computer that is the destination for the ICMP echo message. Заданное для этого параметра значение может быть именем узла или строковым представлением IP-адреса.The value specified for this parameter can be a host name or a string representation of an IP address.

userToken
Object

Объект, передаваемый в метод, вызываемый после завершении асинхронной операции.An object that is passed to the method invoked when the asynchronous operation completes.

Исключения

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

Выполняется вызов метода SendAsync(String, Object).A call to SendAsync(String, Object) method is in progress.

Параметр address является IPv6-адресом, а на локальном компьютере установлена операционная система более ранней версии, чем Windows 2000.address is an IPv6 address and the local computer is running an operating system earlier than Windows 2000.

Возникло исключение при отправке или получении сообщений ICMP.An exception was thrown while sending or receiving the ICMP messages. Чтобы узнать, какое именно исключение возникло, обратитесь ко внутреннему исключению.See the inner exception for the exact exception that was thrown.

Параметр hostNameOrAddress не удалось разрешить в допустимый IP-адрес.hostNameOrAddress could not be resolved to a valid IP address.

Данный объект удален.This object has been disposed.

Примеры

Пример кода, демонстрирующий вызов метода SendAsync, см. в разделе Общие сведения о классе Ping.For a code example that demonstrates calling the SendAsync method, see the Ping class overview.

Комментарии

Метод SendAsync отправляет Эхо-сообщение асинхронно и, когда операция завершается (успешно или неуспешно), возвращает состояние приложению.The SendAsync method sends the echo message asynchronously and, when the operation completes (successfully or unsuccessfully), returns the status to your application. Вызовите метод SendAsync, если приложение не должно блокироваться.Call the SendAsync method when your application should not block. Каждый вызов этого метода выполняется в отдельном потоке, который автоматически выделяется из пула потоков.Each call to this method executes in a separate thread that is automatically allocated from the thread pool. По завершении асинхронной операции она вызывает событие PingCompleted.When the asynchronous operation completes, it raises the PingCompleted event. Чтобы указать метод, вызываемый при SendAsync вызове события, необходимо добавить делегат PingCompletedEventHandler в событие перед вызовом SendAsync.To specify the method that is called when SendAsync raises the event, you must add a PingCompletedEventHandler delegate to the event before calling SendAsync. Метод делегата получает объект PingCompletedEventArgs, содержащий объект PingReply, который описывает результат вызова SendAsync.The delegate's method receives a PingCompletedEventArgs object that contains a PingReply object that describes the result of the SendAsync call. Объект PingCompletedEventArgs наследует свойство UserState.The PingCompletedEventArgs object inherits the UserState property. Это свойство содержит объект userToken, переданный в вызов SendAsync.This property contains the userToken object passed into the SendAsync call.

Примечание

Если приложение должно блокироваться во время ожидания ответа, используйте методы Send. Эти методы являются синхронными.If your application should block while waiting for a reply, use the Send methods; these methods are synchronous.

Этот метод отправляет буфер данных 32 Byte с сообщением проверки связи ICMP.This method sends a 32 Byte data buffer with the ICMP echo message. Метод ожидает пять секунд для сообщения ответа проверки связи ICMP.The method waits five seconds for an ICMP echo reply message. Если он не получает ответ в тот момент, когда метод возвращает значение, а свойство Status установлено в TimedOut.If it does not receive a reply in that time the method returns and the Status property is set to TimedOut.

Эта перегрузка использует параметры по умолчанию для фрагментации пакетов и пересылки пакетов.This overload uses default settings for packet fragmentation and packet forwarding. Пакет, содержащий Эхо-сообщение ICMP, может быть фрагментирован при передаче, если общий размер пакета превышает максимальный размер пакета, который может быть передан одним из узлов маршрутизации между локальным и удаленным компьютерами.The packet that contains the ICMP echo message can be fragmented in transit if the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers. Чтобы предотвратить фрагментацию, используйте один из SendAsync методов, принимающих параметр options, и задайте для свойства DontFragment значение true.To prevent fragmentation, use one of the SendAsync methods that takes an options parameter, and set the DontFragment property to true. Если DontFragment true, а общий размер пакета превышает максимальный размер пакета, который может быть передан одним из узлов маршрутизации между локальным и удаленным компьютерами, запрос проверки связи ICMP завершается сбоем.When DontFragment is true and the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers, the ICMP echo request fails. В этом случае для Status устанавливается значение PacketTooBig.When this happens, the Status is set to PacketTooBig.

Пакеты или фрагменты пакетов могут перенаправляться узлами маршрутизации 128 раз, прежде чем они будут удалены.The packet or packet fragments can be forwarded by routing nodes 128 times before being discarded. Чтобы изменить этот параметр, используйте перегрузку SendAsync, которая принимает параметр options, и присвойте свойству Ttl нужное значение.To change this setting, use a SendAsync overload that takes an options parameter, and set the Ttl property to the desired value. Если пакет не достигает места назначения после пересылки указанного числа раз, пакет отбрасывается и запрос проверки связи ICMP завершается сбоем.If the packet does not reach its destination after being forwarded the specified number of times, the packet is discarded and the ICMP echo request fails. В этом случае для Status устанавливается значение TtlExpired.When this happens, the Status is set to TtlExpired.

Безопасность

NetworkInformationPermission
Для отправки сообщения проверки связи ICMP.To send an ICMP echo message. Связанное перечисление: PingAssociated enumeration: Ping

SendAsync(IPAddress, Object)

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP на удаленный компьютер с указанным IPAddress и получения от него соответствующего сообщения ответа проверки связи ICMP.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message to the computer that has the specified IPAddress, and receive a corresponding ICMP echo reply message from that computer.

public:
 void SendAsync(System::Net::IPAddress ^ address, System::Object ^ userToken);
public void SendAsync (System.Net.IPAddress address, object userToken);
member this.SendAsync : System.Net.IPAddress * obj -> unit
Public Sub SendAsync (address As IPAddress, userToken As Object)

Параметры

address
IPAddress

Объект IPAddress, идентифицирующий компьютер, на который будет направлено данное сообщение проверки связи ICMP.An IPAddress that identifies the computer that is the destination for the ICMP echo message.

userToken
Object

Объект, передаваемый в метод, вызываемый после завершении асинхронной операции.An object that is passed to the method invoked when the asynchronous operation completes.

Исключения

Свойство address имеет значение null.address is null.

Выполняется вызов метода SendAsync.A call to the SendAsync method is in progress.

Параметр address является IPv6-адресом, а на локальном компьютере установлена операционная система более ранней версии, чем Windows 2000.address is an IPv6 address and the local computer is running an operating system earlier than Windows 2000.

Возникло исключение при отправке или получении сообщений ICMP.An exception was thrown while sending or receiving the ICMP messages. Чтобы узнать, какое именно исключение возникло, обратитесь ко внутреннему исключению.See the inner exception for the exact exception that was thrown.

address не является допустимым IP-адресом.address is not a valid IP address.

Данный объект удален.This object has been disposed.

Примеры

Пример кода, демонстрирующий вызов метода SendAsync, см. в разделе Общие сведения о классе Ping.For a code example that demonstrates calling a SendAsync method, see the Ping class overview.

Комментарии

Метод SendAsync отправляет Эхо-сообщение асинхронно и, когда операция завершается (успешно или неуспешно), возвращает состояние приложению.The SendAsync method sends the echo message asynchronously and, when the operation completes (successfully or unsuccessfully), returns the status to your application. Вызовите метод SendAsync, если приложение не должно блокироваться.Call the SendAsync method when your application should not block. Каждый вызов этого метода выполняется в отдельном потоке, который автоматически выделяется из пула потоков.Each call to this method executes in a separate thread that is automatically allocated from the thread pool. По завершении асинхронной операции она вызывает событие PingCompleted.When the asynchronous operation completes, it raises the PingCompleted event. Чтобы указать метод, вызываемый при SendAsync вызове события, необходимо добавить делегат PingCompletedEventHandler в событие перед вызовом SendAsync.To specify the method that is called when SendAsync raises the event, you must add a PingCompletedEventHandler delegate to the event before calling SendAsync. Метод делегата получает объект PingCompletedEventArgs, содержащий объект PingReply, который описывает результат вызова SendAsync.The delegate's method receives a PingCompletedEventArgs object that contains a PingReply object that describes the result of the SendAsync call. Объект PingCompletedEventArgs наследует свойство UserState.The PingCompletedEventArgs object inherits the UserState property. Это свойство содержит объект userToken, переданный в вызов SendAsync.This property contains the userToken object passed into the SendAsync call.

Примечание

Если приложение должно блокироваться во время ожидания ответа, используйте один из Send методов. Эти методы являются синхронными.If your application should block while waiting for a reply, use one of the Send methods; these methods are synchronous.

Этот метод отправляет буфер данных 32 Byte с сообщением проверки связи ICMP.This method sends a 32 Byte data buffer with the ICMP echo message. Метод ожидает пять секунд для сообщения ответа проверки связи ICMP.The method waits five seconds for an ICMP echo reply message. Если он не получает ответ в это время, метод возвращает значение, а свойство StatusTimedOut.If it does not receive a reply in that time, the method returns and the Status property is set to TimedOut.

Эта перегрузка использует параметры по умолчанию для фрагментации пакетов и пересылки пакетов.This overload uses default settings for packet fragmentation and packet forwarding. Пакет, содержащий Эхо-сообщение ICMP, может быть фрагментирован при передаче, если общий размер пакета превышает максимальный размер пакета, который может быть передан одним из узлов маршрутизации между локальным и удаленным компьютерами.The packet that contains the ICMP echo message can be fragmented in transit if the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers. Чтобы предотвратить фрагментацию, используйте один из SendAsync методов, принимающих параметр options, и задайте для свойства DontFragment значение true.To prevent fragmentation, use one of the SendAsync methods that takes an options parameter, and set the DontFragment property to true. Если DontFragment true, а общий размер пакета превышает максимальный размер пакета, который может быть передан одним из узлов маршрутизации между локальным и удаленным компьютерами, запрос проверки связи ICMP завершается сбоем.When DontFragment is true and the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers, the ICMP echo request fails. В этом случае для Status устанавливается значение PacketTooBig.When this happens, the Status is set to PacketTooBig.

Пакеты или фрагменты пакетов могут перенаправляться узлами маршрутизации 128 раз, прежде чем они будут удалены.The packet or packet fragments can be forwarded by routing nodes 128 times before being discarded. Чтобы изменить этот параметр, используйте перегрузку SendAsync, которая принимает параметр options, и присвойте свойству Ttl нужное значение.To change this setting, use a SendAsync overload that takes an options parameter, and set the Ttl property to the desired value. Если пакет не достигает места назначения после пересылки указанного числа раз, пакет отбрасывается и запрос проверки связи ICMP завершается сбоем.If the packet does not reach its destination after being forwarded the specified number of times, the packet is discarded and the ICMP echo request fails. В этом случае для Status устанавливается значение TtlExpired.When this happens, the Status is set to TtlExpired.

Безопасность

NetworkInformationPermission
Для отправки сообщения проверки связи ICMP.To send an ICMP echo message. Связанное перечисление: PingAssociated enumeration: Ping

SendAsync(String, Int32, Object)

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP на указанный компьютер и получения от него соответствующего сообщения ответа проверки связи ICMP.Asynchronously attempts to send an Internet Control Message Protocol (ICMP) echo message to the specified computer, and receive a corresponding ICMP echo reply message from that computer. Эта перегруженная версия метода позволяет указать тайм-аут операции.This overload allows you to specify a time-out value for the operation.

public:
 void SendAsync(System::String ^ hostNameOrAddress, int timeout, System::Object ^ userToken);
public void SendAsync (string hostNameOrAddress, int timeout, object userToken);
member this.SendAsync : string * int * obj -> unit
Public Sub SendAsync (hostNameOrAddress As String, timeout As Integer, userToken As Object)

Параметры

hostNameOrAddress
String

Объект String, идентифицирующий компьютер, на который будет отправлено данное сообщение проверки связи ICMP.A String that identifies the computer that is the destination for the ICMP echo message. Заданное для этого параметра значение может быть именем узла или строковым представлением IP-адреса.The value specified for this parameter can be a host name or a string representation of an IP address.

timeout
Int32

Значение Int32, указывающее максимальное время (после отправки сообщения проверки связи) ожидания сообщения ответа проверки связи ICMP в миллисекундах.An Int32 value that specifies the maximum number of milliseconds (after sending the echo message) to wait for the ICMP echo reply message.

userToken
Object

Объект, передаваемый в метод, вызываемый после завершении асинхронной операции.An object that is passed to the method invoked when the asynchronous operation completes.

Исключения

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

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

Выполняется вызов SendAsync.A call to SendAsync is in progress.

Параметр hostNameOrAddress является IPv6-адресом, а на локальном компьютере установлена операционная система более ранней версии, чем Windows 2000.hostNameOrAddress is an IPv6 address and the local computer is running an operating system earlier than Windows 2000.

Возникло исключение при отправке или получении сообщений ICMP.An exception was thrown while sending or receiving the ICMP messages. Чтобы узнать, какое именно исключение возникло, обратитесь ко внутреннему исключению.See the inner exception for the exact exception that was thrown.

Параметр hostNameOrAddress не удалось разрешить в допустимый IP-адрес.hostNameOrAddress could not be resolved to a valid IP address.

Данный объект удален.This object has been disposed.

Примеры

Пример кода, демонстрирующий вызов метода SendAsync, см. в разделе Общие сведения о классе Ping.For a code example that demonstrates calling the SendAsync method, see the Ping class overview.

Комментарии

Метод SendAsync отправляет Эхо-сообщение асинхронно и, когда операция завершается (успешно или неуспешно), возвращает состояние приложению.The SendAsync method sends the Echo message asynchronously and, when the operation completes (successfully or unsuccessfully), returns the status to your application. Вызовите метод SendAsync, если приложение не должно блокироваться.Call the SendAsync method when your application should not block. Каждый вызов выполняется в отдельном потоке, который автоматически выделяется из пула потоков.Each call executes in a separate thread that is automatically allocated from the thread pool. По завершении асинхронной операции она вызывает событие PingCompleted.When the asynchronous operation completes, it raises the PingCompleted event. Приложения используют делегат PingCompletedEventHandler, чтобы указать метод, который вызывается, когда SendAsync вызывает событие.Applications use a PingCompletedEventHandler delegate to specify the method that is called when SendAsync raises the event. Перед вызовом SendAsyncнеобходимо добавить делегат PingCompletedEventHandler в событие.You must add a PingCompletedEventHandler delegate to the event before calling SendAsync. Метод делегата получает объект PingCompletedEventArgs, содержащий объект PingReply, который описывает результат вызова SendAsync.The delegate's method receives a PingCompletedEventArgs object that contains a PingReply object that describes the result of the SendAsync call. Объект PingCompletedEventArgs наследует свойство UserState.The PingCompletedEventArgs object inherits the UserState property. Это свойство содержит объект userToken, переданный в вызов SendAsync.This property contains the userToken object passed into the SendAsync call.

Если приложение должно блокироваться во время ожидания ответа, используйте методы Send. Эти методы являются синхронными.If your application should block while waiting for a reply, use the Send methods; these methods are synchronous.

Если сообщение ICMP эхо-ответа не получено в течение времени, указанного параметром timeout, эхо ICMP не выполняется, а свойство Status имеет значение TimedOut.If the ICMP echo reply message is not received within the time specified by the timeout parameter, the ICMP echo fails, and the Status property is set to TimedOut.

Примечание

При указании очень маленьких чисел для timeoutответ на запрос проверки связи можно получить, даже если истечет timeout миллисекунд.When specifying very small numbers for timeout, the Ping reply can be received even if timeout milliseconds have elapsed.

Эта перегрузка использует параметры по умолчанию для фрагментации пакетов и пересылки пакетов.This overload uses default settings for packet fragmentation and packet forwarding. Пакет, содержащий Эхо-сообщение ICMP, может быть фрагментирован при передаче, если общий размер пакета превышает максимальный размер пакета, который может быть передан одним из узлов маршрутизации между локальным и удаленным компьютерами.The packet that contains the ICMP echo message can be fragmented in transit if the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers. Чтобы предотвратить фрагментацию, используйте один из SendAsync методов, принимающих параметр options, и задайте для свойства DontFragment значение true.To prevent fragmentation, use one of the SendAsync methods that takes an options parameter, and set the DontFragment property to true. Если DontFragment true, а общий размер пакета превышает максимальный размер пакета, который может быть передан одним из узлов маршрутизации между локальным и удаленным компьютерами, запрос проверки связи ICMP завершается сбоем.When DontFragment is true and the total packet size exceeds the maximum packet size that can be transmitted by one of the routing nodes between the local and remote computers, the ICMP echo request fails. В этом случае для Status устанавливается значение PacketTooBig.When this happens, the Status is set to PacketTooBig. Фрагменты пакетов или пакетов (если они фрагментированы) могут перенаправляться узлами маршрутизации 128 раз, прежде чем они будут удалены.The packet or packet fragments (if fragmented) can be forwarded by routing nodes 128 times before being discarded. Чтобы изменить этот параметр, используйте перегрузку SendAsync, которая принимает параметр options, и присвойте свойству Ttl нужное значение.To change this setting, use a SendAsync overload that takes an options parameter, and set the Ttl property to the desired value. Если пакет не достигает места назначения после пересылки указанного числа раз, пакет отбрасывается и запрос проверки связи ICMP завершается сбоем.If the packet does not reach its destination after being forwarded the specified number of times, the packet is discarded and the ICMP echo request fails. В этом случае для Status устанавливается значение TtlExpired.When this happens, the Status is set to TtlExpired.

Безопасность

NetworkInformationPermission
Для отправки сообщения проверки связи ICMP.To send an ICMP echo message. Связанное перечисление: PingAssociated enumeration: Ping

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