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


Ping.SendAsync Метод

Определение

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP на компьютер и получения от него соответствующего сообщения ответа проверки связи ICMP.

Перегрузки

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

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP с заданным буфером данных на указанный компьютер и получения от него соответствующего сообщения ответа проверки связи ICMP. Эта перегруженная версия метода позволяет указать тайм-аут операции и управлять значениями фрагментации и срока жизни пакета ICMP.

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

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP с заданным буфером данных на компьютер с указанным IPAddress и получения от него соответствующего сообщения ответа проверки связи ICMP. Эта перегруженная версия метода позволяет указать тайм-аут операции и управлять значениями фрагментации и срока жизни пакета сообщения проверки связи ICMP.

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

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP с заданным буфером данных на указанный компьютер и получения от него соответствующего сообщения ответа проверки связи ICMP. Эта перегруженная версия метода позволяет указать тайм-аут операции.

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

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP с заданным буфером данных на компьютер с указанным IPAddress и получения от него соответствующего сообщения ответа проверки связи ICMP. Эта перегруженная версия метода позволяет указать тайм-аут операции.

SendAsync(IPAddress, Int32, Object)

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP на удаленный компьютер с указанным IPAddress и получения от него соответствующего сообщения ответа проверки связи ICMP. Эта перегруженная версия метода позволяет указать тайм-аут операции.

SendAsync(String, Object)

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP на указанный компьютер и получения от него соответствующего сообщения ответа проверки связи ICMP.

SendAsync(IPAddress, Object)

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP на удаленный компьютер с указанным IPAddress и получения от него соответствующего сообщения ответа проверки связи ICMP.

SendAsync(String, Int32, Object)

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP на указанный компьютер и получения от него соответствующего сообщения ответа проверки связи ICMP. Эта перегруженная версия метода позволяет указать тайм-аут операции.

Комментарии

Эти методы не приводят к блокировке потока main приложения. Если вы хотите заблокировать во время ожидания ответа icMP эхо-ответа, используйте Send методы .

Примечание

IP-адрес, возвращаемый любым из SendAsync методов, может быть получен с вредоносного удаленного компьютера. Не подключайтесь к удаленному компьютеру с помощью этой функции. Используйте DNS для определения IP-адреса компьютера, к которому требуется подключиться.

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

Исходный код:
Ping.cs
Исходный код:
Ping.cs
Исходный код:
Ping.cs

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP с заданным буфером данных на указанный компьютер и получения от него соответствующего сообщения ответа проверки связи ICMP. Эта перегруженная версия метода позволяет указать тайм-аут операции и управлять значениями фрагментации и срока жизни пакета ICMP.

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);
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. Заданное для этого параметра значение может быть именем узла или строковым представлением IP-адреса.

timeout
Int32

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

buffer
Byte[]

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

options
PingOptions

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

userToken
Object

Объект, передаваемый в метод, вызываемый после завершении асинхронной операции.

Исключения

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

-или-

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

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

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

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

Параметр hostNameOrAddress не удалось разрешить в допустимый IP-адрес.

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

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

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

Примеры

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

#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 асинхронно отправляет сообщение Echo и, когда операция завершается (успешно или неудачно), возвращает состояние вашему приложению. Вызовите метод , SendAsync если приложение не должно блокироваться. Каждый вызов выполняется в отдельном потоке, который автоматически выделяется из пула потоков. После завершения асинхронной операции возникает PingCompleted событие . Приложения используют делегат для PingCompletedEventHandler указания метода, вызываемого при SendAsync возникновении события. Перед вызовом PingCompletedEventHandlerSendAsyncнеобходимо добавить делегата к событию . Метод делегата получает PingCompletedEventArgs объект , содержащий PingReply объект , описывающий результат SendAsync вызова . Объект PingCompletedEventArgs наследует UserState свойство . Это свойство содержит объект , переданный userToken в SendAsync вызов .

Если приложение должно блокироваться во время ожидания ответа, используйте Send методы ; эти методы являются синхронными.

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

Примечание

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

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

Используйте свойство , Ttl чтобы указать максимальное количество переадресации эхо-сообщения ICMP до достижения места назначения. Если пакет не достигает места назначения после перенаправления указанного числа раз, пакет удаляется и запрос на эхо ICMP завершается сбоем. В этом случае параметру Status присваивается значение TtlExpired.

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

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

Исходный код:
Ping.cs
Исходный код:
Ping.cs
Исходный код:
Ping.cs

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP с заданным буфером данных на компьютер с указанным IPAddress и получения от него соответствующего сообщения ответа проверки связи ICMP. Эта перегруженная версия метода позволяет указать тайм-аут операции и управлять значениями фрагментации и срока жизни пакета сообщения проверки связи ICMP.

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

timeout
Int32

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

buffer
Byte[]

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

options
PingOptions

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

userToken
Object

Объект, передаваемый в метод, вызываемый после завершении асинхронной операции.

Исключения

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

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

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

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

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

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

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

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

Примеры

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

В следующем примере кода требуются следующие пространства имен:

#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.

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 асинхронно отправляет сообщение Echo и, когда операция завершается (успешно или неудачно), возвращает состояние вашему приложению. Вызовите метод , SendAsync если приложение не должно блокироваться. Каждый вызов выполняется в отдельном потоке, который автоматически выделяется из пула потоков. После завершения асинхронной операции возникает PingCompleted событие . Приложения используют делегат для PingCompletedEventHandler указания метода, вызываемого при SendAsync возникновении события. Перед вызовом PingCompletedEventHandlerSendAsyncнеобходимо добавить делегата к событию . Метод делегата получает PingCompletedEventArgs объект , содержащий PingReply объект , описывающий результат SendAsync вызова . Объект PingCompletedEventArgs наследует UserState свойство . Это свойство содержит объект , переданный userToken в SendAsync вызов .

Если приложение блокируется во время ожидания ответа, используйте Send методы ; эти методы являются синхронными.

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

Примечание

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

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

Используйте свойство , Ttl чтобы указать максимальное количество переадресации эхо-сообщения ICMP до достижения места назначения. Если пакет не достигает места назначения после перенаправления указанного числа раз, пакет удаляется и запрос на эхо ICMP завершается сбоем. В этом случае параметру Status присваивается значение TtlExpired.

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

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

Исходный код:
Ping.cs
Исходный код:
Ping.cs
Исходный код:
Ping.cs

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP с заданным буфером данных на указанный компьютер и получения от него соответствующего сообщения ответа проверки связи ICMP. Эта перегруженная версия метода позволяет указать тайм-аут операции.

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);
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. Заданное для этого параметра значение может быть именем узла или строковым представлением IP-адреса.

timeout
Int32

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

buffer
Byte[]

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

userToken
Object

Объект, передаваемый в метод, вызываемый после завершении асинхронной операции.

Исключения

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

-или-

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

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

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

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

Параметр hostNameOrAddress не удалось разрешить в допустимый IP-адрес.

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

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

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

Примеры

В следующем примере кода показано, как вызвать перегрузку SendAsync , см. общие сведения о Ping классе.

Комментарии

Метод SendAsync асинхронно отправляет сообщение Echo и, когда операция завершается (успешно или неудачно), возвращает состояние вашему приложению. Вызовите метод , SendAsync если приложение не должно блокироваться. Каждый вызов выполняется в отдельном потоке, который автоматически выделяется из пула потоков. После завершения асинхронной операции возникает PingCompleted событие . Приложения используют делегат для PingCompletedEventHandler указания метода, вызываемого при SendAsync возникновении события. Перед вызовом PingCompletedEventHandlerSendAsyncнеобходимо добавить делегата к событию . Метод делегата получает объект , PingCompletedEventArgs содержащий PingReply объект , описывающий результат SendAsync вызова . Объект PingCompletedEventArgs наследует UserState свойство . Это свойство содержит объект , переданный userToken в SendAsync вызов .

Если приложение должно блокироваться во время ожидания ответа, используйте Send методы ; эти методы являются синхронными.

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

Примечание

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

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

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

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

Исходный код:
Ping.cs
Исходный код:
Ping.cs
Исходный код:
Ping.cs

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP с заданным буфером данных на компьютер с указанным IPAddress и получения от него соответствующего сообщения ответа проверки связи ICMP. Эта перегруженная версия метода позволяет указать тайм-аут операции.

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

timeout
Int32

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

buffer
Byte[]

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

userToken
Object

Объект, передаваемый в метод, вызываемый после завершении асинхронной операции.

Исключения

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

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

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

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

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

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

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

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

Примеры

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

Комментарии

Этот метод отправляет эхо-сообщение асинхронно и, когда операция завершается (успешно или неудачно), возвращает состояние вашему приложению. Вызовите метод , SendAsync если приложение не должно блокироваться. Каждый вызов выполняется в отдельном потоке, который автоматически выделяется из пула потоков. После завершения асинхронной операции возникает PingCompleted событие . Чтобы указать метод, который вызывается при SendAsync возникновении события, необходимо добавить делегат к событию перед вызовом PingCompletedEventHandlerSendAsync. Метод делегата получает PingCompletedEventArgs объект , содержащий PingReply объект , описывающий результат SendAsync вызова . Объект PingCompletedEventArgs наследует UserState свойство . Это свойство содержит объект , переданный userToken в SendAsync вызов .

Примечание

Если приложение блокируется во время ожидания ответа, используйте Send методы ; эти методы являются синхронными.

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

Примечание

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

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

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

SendAsync(IPAddress, Int32, Object)

Исходный код:
Ping.cs
Исходный код:
Ping.cs
Исходный код:
Ping.cs

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP на удаленный компьютер с указанным IPAddress и получения от него соответствующего сообщения ответа проверки связи ICMP. Эта перегруженная версия метода позволяет указать тайм-аут операции.

public:
 void SendAsync(System::Net::IPAddress ^ address, int timeout, System::Object ^ userToken);
public void SendAsync (System.Net.IPAddress address, int timeout, 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.

timeout
Int32

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

userToken
Object

Объект, передаваемый в метод, вызываемый после завершении асинхронной операции.

Исключения

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

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

Выполняется вызов метода SendAsync(IPAddress, Int32, Byte[], Object).

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

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

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

Примеры

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

Комментарии

Метод SendAsync отправляет сообщение Echo асинхронно и по завершении (успешно или неудачно) возвращает в приложение состояние. Вызовите метод , SendAsync если приложение не должно блокироваться. Каждый вызов выполняется в отдельном потоке, который автоматически выделяется из пула потоков. После завершения асинхронной операции возникает PingCompleted событие . Приложения используют делегат для PingCompletedEventHandler указания метода, вызываемого при SendAsync возникновении события. Перед вызовом PingCompletedEventHandlerSendAsyncнеобходимо добавить делегат в событие . Метод делегата получает PingCompletedEventArgs объект , содержащий PingReply объект , описывающий результат SendAsync вызова. Объект PingCompletedEventArgs наследует UserState свойство . Это свойство содержит объект, userToken переданный в SendAsync вызов .

Если приложение должно блокироваться во время ожидания ответа, используйте Send методы ; эти методы являются синхронными.

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

Примечание

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

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

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

SendAsync(String, Object)

Исходный код:
Ping.cs
Исходный код:
Ping.cs
Исходный код:
Ping.cs

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP на указанный компьютер и получения от него соответствующего сообщения ответа проверки связи ICMP.

public:
 void SendAsync(System::String ^ hostNameOrAddress, System::Object ^ userToken);
public void SendAsync (string hostNameOrAddress, 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. Заданное для этого параметра значение может быть именем узла или строковым представлением IP-адреса.

userToken
Object

Объект, передаваемый в метод, вызываемый после завершении асинхронной операции.

Исключения

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

Выполняется вызов метода SendAsync(String, Object).

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

Параметр hostNameOrAddress не удалось разрешить в допустимый IP-адрес.

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

Примеры

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

Комментарии

Метод SendAsync отправляет эхо-сообщение асинхронно и, когда операция завершается (успешно или неудачно), возвращает состояние приложению. Вызовите метод , SendAsync если приложение не должно блокироваться. Каждый вызов этого метода выполняется в отдельном потоке, который автоматически выделяется из пула потоков. После завершения асинхронной операции возникает PingCompleted событие . Чтобы указать метод, который вызывается при SendAsync возникновении события, необходимо добавить делегат к событию перед вызовом PingCompletedEventHandlerSendAsync. Метод делегата получает PingCompletedEventArgs объект , содержащий PingReply объект , описывающий результат SendAsync вызова. Объект PingCompletedEventArgs наследует UserState свойство . Это свойство содержит объект, userToken переданный в SendAsync вызов .

Примечание

Если приложение должно блокироваться во время ожидания ответа, используйте Send методы ; эти методы являются синхронными.

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

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

Пакеты или фрагменты пакетов можно переадресовывать узлами маршрутизации 128 раз, прежде чем они будут удалены. Чтобы изменить этот параметр, используйте перегрузку SendAsyncoptions , которая принимает параметр, и присвойте свойству Ttl нужное значение. Если пакет не достигает места назначения после перенаправления указанного числа раз, пакет отклоняется, а эхо-запрос ICMP завершается ошибкой. В этом случае параметру Status присваивается значение TtlExpired.

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

SendAsync(IPAddress, Object)

Исходный код:
Ping.cs
Исходный код:
Ping.cs
Исходный код:
Ping.cs

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP на удаленный компьютер с указанным IPAddress и получения от него соответствующего сообщения ответа проверки связи ICMP.

public:
 void SendAsync(System::Net::IPAddress ^ address, System::Object ^ userToken);
public void SendAsync (System.Net.IPAddress address, 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.

userToken
Object

Объект, передаваемый в метод, вызываемый после завершении асинхронной операции.

Исключения

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

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

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

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

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

Примеры

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

Комментарии

Метод SendAsync отправляет эхо-сообщение асинхронно и, когда операция завершается (успешно или неудачно), возвращает состояние приложению. Вызовите метод , SendAsync если приложение не должно блокироваться. Каждый вызов этого метода выполняется в отдельном потоке, который автоматически выделяется из пула потоков. После завершения асинхронной операции возникает PingCompleted событие . Чтобы указать метод, который вызывается при SendAsync возникновении события, необходимо добавить делегат к событию перед вызовом PingCompletedEventHandlerSendAsync. Метод делегата получает PingCompletedEventArgs объект , содержащий PingReply объект , описывающий результат SendAsync вызова. Объект PingCompletedEventArgs наследует UserState свойство . Это свойство содержит объект, userToken переданный в SendAsync вызов .

Примечание

Если приложение должно блокироваться во время ожидания ответа, используйте один из Send методов; эти методы являются синхронными.

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

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

Пакеты или фрагменты пакетов можно переадресовывать узлами маршрутизации 128 раз, прежде чем они будут удалены. Чтобы изменить этот параметр, используйте перегрузку SendAsyncoptions , которая принимает параметр, и присвойте свойству Ttl нужное значение. Если пакет не достигает места назначения после перенаправления указанного числа раз, пакет отклоняется, а эхо-запрос ICMP завершается ошибкой. В этом случае параметру Status присваивается значение TtlExpired.

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

SendAsync(String, Int32, Object)

Исходный код:
Ping.cs
Исходный код:
Ping.cs
Исходный код:
Ping.cs

Предпринимает попытку асинхронной отправки сообщения запроса проверки связи ICMP на указанный компьютер и получения от него соответствующего сообщения ответа проверки связи ICMP. Эта перегруженная версия метода позволяет указать тайм-аут операции.

public:
 void SendAsync(System::String ^ hostNameOrAddress, int timeout, System::Object ^ userToken);
public void SendAsync (string hostNameOrAddress, int timeout, 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. Заданное для этого параметра значение может быть именем узла или строковым представлением IP-адреса.

timeout
Int32

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

userToken
Object

Объект, передаваемый в метод, вызываемый после завершении асинхронной операции.

Исключения

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

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

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

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

Параметр hostNameOrAddress не удалось разрешить в допустимый IP-адрес.

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

Примеры

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

Комментарии

Метод SendAsync отправляет сообщение Echo асинхронно и по завершении (успешно или неудачно) возвращает в приложение состояние. Вызовите метод , SendAsync если приложение не должно блокироваться. Каждый вызов выполняется в отдельном потоке, который автоматически выделяется из пула потоков. После завершения асинхронной операции возникает PingCompleted событие . Приложения используют делегат для PingCompletedEventHandler указания метода, вызываемого при SendAsync возникновении события. Перед вызовом PingCompletedEventHandlerSendAsyncнеобходимо добавить делегат в событие . Метод делегата получает PingCompletedEventArgs объект , содержащий PingReply объект , описывающий результат SendAsync вызова. Объект PingCompletedEventArgs наследует UserState свойство . Это свойство содержит объект, userToken переданный в SendAsync вызов .

Если приложение должно блокироваться во время ожидания ответа, используйте Send методы ; эти методы являются синхронными.

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

Примечание

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

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

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