Ping.SendAsync Yöntem

Tanım

Zaman uyumsuz olarak bir bilgisayara İnternet Denetim İletisi Protokolü (ICMP) yankı iletisi göndermeye çalışır ve bu bilgisayardan karşılık gelen bir ICMP yankı yanıt iletisi alır.

Aşırı Yüklemeler

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

Belirtilen veri arabelleğiyle bir İnternet Denetim İletisi Protokolü (ICMP) yankı iletisini belirtilen bilgisayara zaman uyumsuz olarak göndermeye çalışır ve bu bilgisayardan karşılık gelen bir ICMP yankı yanıtı iletisi alır. Bu aşırı yükleme, işlem için bir zaman aşımı değeri belirtmenize ve ICMP paketi için parçalanmayı ve Yaşam Süresi değerlerini denetlemenize olanak tanır.

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

Zaman uyumsuz olarak, belirtilen veri arabelleğine sahip IPAddressbir İnternet Denetim İletisi Protokolü (ICMP) yankı iletisi göndermeye çalışır ve ilgili bilgisayardan ilgili ICMP yankı yanıtı iletisini alır. Bu aşırı yükleme, işlem için bir zaman aşımı değeri belirtmenize ve ICMP yankı ileti paketi için parçalanmayı ve Yaşam Süresi değerlerini denetlemenize olanak tanır.

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

Belirtilen veri arabelleğiyle bir İnternet Denetim İletisi Protokolü (ICMP) yankı iletisini belirtilen bilgisayara zaman uyumsuz olarak göndermeye çalışır ve bu bilgisayardan karşılık gelen bir ICMP yankı yanıtı iletisi alır. Bu aşırı yükleme, işlem için bir zaman aşımı değeri belirtmenize olanak tanır.

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

Zaman uyumsuz olarak, belirtilen veri arabelleğine sahip IPAddressbir İnternet Denetim İletisi Protokolü (ICMP) yankı iletisi göndermeye çalışır ve ilgili bilgisayardan ilgili ICMP yankı yanıtı iletisini alır. Bu aşırı yükleme, işlem için bir zaman aşımı değeri belirtmenize olanak tanır.

SendAsync(IPAddress, Int32, Object)

Belirtilen değerine sahip IPAddressbilgisayara zaman uyumsuz olarak bir İnternet Denetim İletisi Protokolü (ICMP) yankı iletisi göndermeye çalışır ve bu bilgisayardan karşılık gelen bir ICMP yankı yanıtı iletisi alır. Bu aşırı yükleme, işlem için bir zaman aşımı değeri belirtmenize olanak tanır.

SendAsync(String, Object)

Belirtilen bilgisayara zaman uyumsuz olarak bir İnternet Denetim İletisi Protokolü (ICMP) yankı iletisi göndermeye çalışır ve bu bilgisayardan karşılık gelen bir ICMP yankı yanıt iletisi alır.

SendAsync(IPAddress, Object)

Belirtilen değerine sahip IPAddressbilgisayara zaman uyumsuz olarak bir İnternet Denetim İletisi Protokolü (ICMP) yankı iletisi göndermeye çalışır ve bu bilgisayardan karşılık gelen bir ICMP yankı yanıtı iletisi alır.

SendAsync(String, Int32, Object)

Belirtilen bilgisayara zaman uyumsuz olarak bir İnternet Denetim İletisi Protokolü (ICMP) yankı iletisi göndermeye çalışır ve bu bilgisayardan karşılık gelen bir ICMP yankı yanıt iletisi alır. Bu aşırı yükleme, işlem için bir zaman aşımı değeri belirtmenize olanak tanır.

Açıklamalar

Bu yöntemler uygulamanızın ana iş parçacığının engellenmesine neden olmaz. ICMP yankı yanıt iletisini beklerken engellemek istiyorsanız yöntemlerini kullanın Send .

Not

Yöntemlerden herhangi biri SendAsync tarafından döndürülen IP adresi kötü amaçlı bir uzak bilgisayardan kaynaklanabilir. Bunu kullanarak uzak bilgisayara bağlanmayın. Bağlanmak istediğiniz makinenin IP adresini belirlemek için DNS kullanın.

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

Kaynak:
Ping.cs
Kaynak:
Ping.cs
Kaynak:
Ping.cs

Belirtilen veri arabelleğiyle bir İnternet Denetim İletisi Protokolü (ICMP) yankı iletisini belirtilen bilgisayara zaman uyumsuz olarak göndermeye çalışır ve bu bilgisayardan karşılık gelen bir ICMP yankı yanıtı iletisi alır. Bu aşırı yükleme, işlem için bir zaman aşımı değeri belirtmenize ve ICMP paketi için parçalanmayı ve Yaşam Süresi değerlerini denetlemenize olanak tanır.

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)

Parametreler

hostNameOrAddress
String

String ICMP yankı iletisinin hedefi olan bilgisayarı tanımlayan. Bu parametre için belirtilen değer bir ana bilgisayar adı veya ip adresinin dize gösterimi olabilir.

timeout
Int32

Int32 ICMP yankı yanıt iletisini beklemek için milisaniye (yankı iletisini gönderdikten sonra) sayısını belirten bir değer.

buffer
Byte[]

Byte ICMP yankı iletisiyle gönderilecek ve ICMP yankı yanıt iletisinde döndürülecek verileri içeren bir dizi. Dizi 65.500 bayttan fazlasını içeremez.

options
PingOptions

PingOptions ICMP yankı ileti paketi için parçalanma ve Yaşam Süresi değerlerini denetlemek için kullanılan nesne.

userToken
Object

Zaman uyumsuz işlem tamamlandığında çağrılan yöntemine geçirilen nesne.

Özel durumlar

hostNameOrAddress veya null boş bir dizedir ("").

-veya-

buffer, null değeridir.

timeout, sıfırdan küçüktür.

çağrısı SendAsync devam ediyor.

ICMP iletileri gönderilirken veya alınırken bir özel durum oluştu. Oluşan tam özel durum için iç özel duruma bakın.

hostNameOrAddress geçerli bir IP adresine çözümlenemedi.

Bu nesne atılmış.

Boyutu buffer 65500 baytı aşıyor.

Yalnızca Linux üzerinde .NET 7 ve sonraki sürümleri: İşlem ayrıcalıklı değildir ve buffer boş değildir.

Örnekler

Aşağıdaki kod örneği, bu yöntemin nasıl çağrılduğunu gösterir.

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

Açıklamalar

SendAsync yöntemi Echo iletisini zaman uyumsuz olarak gönderir ve işlem tamamlandığında (başarıyla veya başarısız olarak), durum değerini uygulamanıza döndürür. Uygulamanızın SendAsync engellememesi gerektiğinde yöntemini çağırın. Her çağrı, iş parçacığı havuzundan otomatik olarak ayrılan ayrı bir iş parçacığında yürütülür. Zaman uyumsuz işlem tamamlandığında olayı tetikler PingCompleted . Uygulamalar, olayı tetiklediğinde SendAsync çağrılan yöntemi belirtmek için bir PingCompletedEventHandler temsilci kullanır. çağrısı SendAsyncyapmadan önce olaya bir PingCompletedEventHandler temsilci eklemeniz gerekir. Temsilcinin yöntemi, çağrının sonucunu SendAsync açıklayan bir nesnesi içeren bir PingReply nesnesi alırPingCompletedEventArgs. PingCompletedEventArgs nesnesi özelliğini devralırUserState. Bu özellik çağrısına userTokenSendAsync geçirilen nesneyi içerir.

Uygulamanızın yanıt beklerken engellemesi gerekiyorsa yöntemlerini kullanın Send ; bu yöntemler zaman uyumludur.

ICMP yankı yanıt iletisi parametresi tarafından timeout belirtilen süre içinde alınmazsa, ICMP yankısı başarısız olur ve Status özelliği olarak TimedOutayarlanır.

Not

için timeoutçok küçük sayılar belirtilirken, milisaniyeler dolmuş olsa timeout bile Ping yanıtı alınabiliyor.

DontFragment özelliği ise true ve toplam paket boyutu, yerel ve uzak bilgisayarlar arasındaki yönlendirme düğümlerinden biri tarafından iletilebilecek en büyük paket boyutunu aşarsa, ICMP yankı isteği başarısız olur. Bu durumda , Status olarak PacketTooBigayarlanır.

Ttl Hedefine ulaşmadan önce ICMP yankı iletisinin en fazla kaç kez iletilebileceğini belirtmek için özelliğini kullanın. Paket belirtilen sayıda iletildikten sonra hedefine ulaşmazsa, paket atılır ve ICMP yankı isteği başarısız olur. Bu durumda , Status olarak TtlExpiredayarlanır.

Şunlara uygulanır

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

Kaynak:
Ping.cs
Kaynak:
Ping.cs
Kaynak:
Ping.cs

Zaman uyumsuz olarak, belirtilen veri arabelleğine sahip IPAddressbir İnternet Denetim İletisi Protokolü (ICMP) yankı iletisi göndermeye çalışır ve ilgili bilgisayardan ilgili ICMP yankı yanıtı iletisini alır. Bu aşırı yükleme, işlem için bir zaman aşımı değeri belirtmenize ve ICMP yankı ileti paketi için parçalanmayı ve Yaşam Süresi değerlerini denetlemenize olanak tanır.

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)

Parametreler

address
IPAddress

IPAddress ICMP yankı iletisinin hedefi olan bilgisayarı tanımlayan.

timeout
Int32

Int32 ICMP yankı yanıt iletisini beklemek için milisaniye (yankı iletisini gönderdikten sonra) sayısını belirten bir değer.

buffer
Byte[]

Byte ICMP yankı iletisiyle gönderilecek ve ICMP yankı yanıt iletisinde döndürülecek verileri içeren bir dizi. Dizi 65.500 bayttan fazlasını içeremez.

options
PingOptions

PingOptions ICMP yankı ileti paketi için parçalanma ve Yaşam Süresi değerlerini denetlemek için kullanılan nesne.

userToken
Object

Zaman uyumsuz işlem tamamlandığında çağrılan yöntemine geçirilen nesne.

Özel durumlar

address veya buffer şeklindedir null.

timeout, sıfırdan küçüktür.

çağrısı SendAsync devam ediyor.

ICMP iletileri gönderilirken veya alınırken bir özel durum oluştu. Oluşan tam özel durum için iç özel duruma bakın.

address geçerli bir IP adresi değil.

Bu nesne atılmış.

Boyutu buffer 65500 baytı aşıyor.

Yalnızca Linux üzerinde .NET 7 ve sonraki sürümleri: İşlem ayrıcalıklı değildir ve buffer boş değildir.

Örnekler

Aşağıdaki kod örneği, bu yöntemin nasıl çağrılduğunu gösterir. Geri çağırma yönteminin uygulanması için yöntem aşırı yükleme örneği bölümüne bakın SendAsync .

Aşağıdaki kod örneği aşağıdaki ad alanlarını gerektirir:

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

Aşağıdaki kod örneği zaman uyumsuz olarak bir ICMP yankı iletisi gönderir.

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

Açıklamalar

SendAsync yöntemi Echo iletisini zaman uyumsuz olarak gönderir ve işlem tamamlandığında (başarıyla veya başarısız olarak), durum değerini uygulamanıza döndürür. Uygulamanızın SendAsync engellememesi gerektiğinde yöntemini çağırın. Her çağrı, iş parçacığı havuzundan otomatik olarak ayrılan ayrı bir iş parçacığında yürütülür. Zaman uyumsuz işlem tamamlandığında olayı tetikler PingCompleted . Uygulamalar, olayı tetiklediğinde SendAsync çağrılan yöntemi belirtmek için bir PingCompletedEventHandler temsilci kullanır. çağrısı SendAsyncyapmadan önce olaya bir PingCompletedEventHandler temsilci eklemeniz gerekir. Temsilcinin yöntemi, çağrının sonucunu SendAsync açıklayan bir nesnesi içeren bir PingReply nesnesi alırPingCompletedEventArgs. PingCompletedEventArgs nesnesi özelliğini devralırUserState. Bu özellik çağrısına userTokenSendAsync geçirilen nesneyi içerir.

Uygulamanız yanıt beklerken engellerse yöntemlerini kullanın Send ; bu yöntemler zaman uyumludur.

ICMP yankı yanıt iletisi parametresi tarafından timeout belirtilen süre içinde alınmazsa, ICMP yankısı başarısız olur ve Status özelliği olarak TimedOutayarlanır.

Not

için timeoutçok küçük sayılar belirtilirken, milisaniyeler dolmuş olsa timeout bile Ping yanıtı alınabiliyor.

DontFragment özelliği ise true ve toplam paket boyutu, yerel ve uzak bilgisayarlar arasındaki yönlendirme düğümlerinden biri tarafından iletilebilecek en büyük paket boyutunu aşarsa, ICMP yankı isteği başarısız olur. Bu durumda , Status olarak PacketTooBigayarlanır.

Ttl Hedefine ulaşmadan önce ICMP yankı iletisinin en fazla kaç kez iletilebileceğini belirtmek için özelliğini kullanın. Paket belirtilen sayıda iletildikten sonra hedefine ulaşmazsa, paket atılır ve ICMP yankı isteği başarısız olur. Bu durumda , Status olarak TtlExpiredayarlanır.

Şunlara uygulanır

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

Kaynak:
Ping.cs
Kaynak:
Ping.cs
Kaynak:
Ping.cs

Belirtilen veri arabelleğiyle bir İnternet Denetim İletisi Protokolü (ICMP) yankı iletisini belirtilen bilgisayara zaman uyumsuz olarak göndermeye çalışır ve bu bilgisayardan karşılık gelen bir ICMP yankı yanıtı iletisi alır. Bu aşırı yükleme, işlem için bir zaman aşımı değeri belirtmenize olanak tanır.

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)

Parametreler

hostNameOrAddress
String

String ICMP yankı iletisinin hedefi olan bilgisayarı tanımlayan. Bu parametre için belirtilen değer bir ana bilgisayar adı veya ip adresinin dize gösterimi olabilir.

timeout
Int32

Int32 ICMP yankı yanıt iletisini beklemek için milisaniye (yankı iletisini gönderdikten sonra) sayısını belirten bir değer.

buffer
Byte[]

Byte ICMP yankı iletisiyle gönderilecek ve ICMP yankı yanıt iletisinde döndürülecek verileri içeren bir dizi. Dizi 65.500 bayttan fazlasını içeremez.

userToken
Object

Zaman uyumsuz işlem tamamlandığında çağrılan yöntemine geçirilen nesne.

Özel durumlar

hostNameOrAddress veya null boş bir dizedir ("").

-veya-

buffer, null değeridir.

timeout, sıfırdan küçüktür.

çağrısı SendAsync devam ediyor.

ICMP iletileri gönderilirken veya alınırken bir özel durum oluştu. Oluşan tam özel durum için iç özel duruma bakın.

hostNameOrAddress geçerli bir IP adresine çözümlenemedi.

Bu nesne atılmış.

Boyutu buffer 65500 baytı aşıyor.

Yalnızca Linux üzerinde .NET 7 ve sonraki sürümleri: İşlem ayrıcalıklı değildir ve buffer boş değildir.

Örnekler

Aşağıdaki kod örneği, bir SendAsync aşırı yüklemeyi çağırmayı gösterir, bkz. sınıfa Ping genel bakış.

Açıklamalar

SendAsync yöntemi Echo iletisini zaman uyumsuz olarak gönderir ve işlem tamamlandığında (başarıyla veya başarısız olarak), durum değerini uygulamanıza döndürür. Uygulamanızın SendAsync engellememesi gerektiğinde yöntemini çağırın. Her çağrı, iş parçacığı havuzundan otomatik olarak ayrılan ayrı bir iş parçacığında yürütülür. Zaman uyumsuz işlem tamamlandığında olayı tetikler PingCompleted . Uygulamalar, olayı tetiklediğinde SendAsync çağrılan yöntemi belirtmek için bir PingCompletedEventHandler temsilci kullanır. çağrısı SendAsyncyapmadan önce olaya bir PingCompletedEventHandler temsilci eklemeniz gerekir. Temsilcinin yöntemi, çağrının sonucunu SendAsync açıklayan bir nesnesi içeren bir PingReply nesnesi alırPingCompletedEventArgs. PingCompletedEventArgs nesnesi özelliğini devralırUserState. Bu özellik çağrısına userTokenSendAsync geçirilen nesneyi içerir.

Uygulamanızın yanıt beklerken engellemesi gerekiyorsa yöntemlerini kullanın Send ; bu yöntemler zaman uyumludur.

ICMP yankı yanıt iletisi parametresi tarafından timeout belirtilen süre içinde alınmazsa, ICMP yankısı başarısız olur ve Status özelliği olarak TimedOutayarlanır.

Not

için timeoutçok küçük sayılar belirtilirken, milisaniyeler dolmuş olsa timeout bile Ping yanıtı alınabiliyor.

Bu aşırı yükleme, paket parçalanması ve paket iletme için varsayılan ayarları kullanır. Toplam paket boyutu, yerel ve uzak bilgisayarlar arasındaki yönlendirme düğümlerinden biri tarafından iletilebilecek en büyük paket boyutunu aşarsa, ICMP yankı iletisini içeren paket aktarım sırasında parçalanabilir. Parçalanmayı önlemek için parametre alan options yöntemlerden birini SendAsync kullanın ve özelliğini olarak trueayarlayınDontFragment. olduğunda DontFragmenttrue ve toplam paket boyutu, yerel ve uzak bilgisayarlar arasındaki yönlendirme düğümlerinden biri tarafından iletilebilen en büyük paket boyutunu aşarsa, ICMP yankı isteği başarısız olur. Bu durumda , Status olarak PacketTooBigayarlanır. Paket veya paket parçaları (parçalanmışsa) atılmadan önce yönlendirme düğümleri tarafından 128 kez iletilebilir. Bu ayarı değiştirmek için parametre alan bir SendAsyncoptions aşırı yükleme kullanın ve özelliği istenen değere ayarlayın Ttl . Paket belirtilen sayıda iletildikten sonra hedefine ulaşmazsa, paket atılır ve ICMP yankı isteği başarısız olur. Bu durumda , Status olarak TtlExpiredayarlanır.

Şunlara uygulanır

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

Kaynak:
Ping.cs
Kaynak:
Ping.cs
Kaynak:
Ping.cs

Zaman uyumsuz olarak, belirtilen veri arabelleğine sahip IPAddressbir İnternet Denetim İletisi Protokolü (ICMP) yankı iletisi göndermeye çalışır ve ilgili bilgisayardan ilgili ICMP yankı yanıtı iletisini alır. Bu aşırı yükleme, işlem için bir zaman aşımı değeri belirtmenize olanak tanır.

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)

Parametreler

address
IPAddress

IPAddress ICMP yankı iletisinin hedefi olan bilgisayarı tanımlayan.

timeout
Int32

Int32 ICMP yankı yanıt iletisini beklemek için milisaniye (yankı iletisini gönderdikten sonra) sayısını belirten bir değer.

buffer
Byte[]

Byte ICMP yankı iletisiyle gönderilecek ve ICMP yankı yanıt iletisinde döndürülecek verileri içeren bir dizi. Dizi 65.500 bayttan fazlasını içeremez.

userToken
Object

Zaman uyumsuz işlem tamamlandığında çağrılan yöntemine geçirilen nesne.

Özel durumlar

address veya buffer şeklindedir null.

timeout, sıfırdan küçüktür.

çağrısı SendAsync devam ediyor.

ICMP iletileri gönderilirken veya alınırken bir özel durum oluştu. Oluşan tam özel durum için iç özel duruma bakın.

address geçerli bir IP adresi değil.

Bu nesne atılmış.

Boyutu buffer 65500 baytı aşıyor.

Yalnızca Linux üzerinde .NET 7 ve sonraki sürümleri: İşlem ayrıcalıklı değildir ve buffer boş değildir.

Örnekler

Aşırı yüklemeyi çağırmayı gösteren bir SendAsync kod örneği için bkz. sınıfa Ping genel bakış.

Açıklamalar

Bu yöntem, yankı iletisini zaman uyumsuz olarak gönderir ve işlem tamamlandığında (başarıyla veya başarısız olarak), durum değerini uygulamanıza döndürür. Uygulamanızın SendAsync engellememesi gerektiğinde yöntemini çağırın. Her çağrı, iş parçacığı havuzundan otomatik olarak ayrılan ayrı bir iş parçacığında yürütülür. Zaman uyumsuz işlem tamamlandığında olayı tetikler PingCompleted . Olayı tetiklediğinde SendAsync çağrılan yöntemi belirtmek için çağırmadan önce SendAsyncolaya bir PingCompletedEventHandler temsilci eklemeniz gerekir. Temsilcinin yöntemi, çağrının sonucunu SendAsync açıklayan bir nesnesi içeren bir PingReply nesnesi alırPingCompletedEventArgs. PingCompletedEventArgs nesnesi özelliğini devralırUserState. Bu özellik çağrısına userTokenSendAsync geçirilen nesneyi içerir.

Not

Uygulamanız yanıt beklerken engellerse yöntemlerini kullanın Send ; bu yöntemler zaman uyumludur.

ICMP yankı yanıt iletisi parametresi tarafından timeout belirtilen süre içinde alınmazsa, ICMP yankısı başarısız olur ve Status özelliği olarak TimedOutayarlanır.

Not

için timeoutçok küçük sayılar belirtilirken, milisaniyeler dolmuş olsa timeout bile Ping yanıtı alınabiliyor.

Bu aşırı yükleme, paket parçalanması ve paket iletme için varsayılan ayarları kullanır. Toplam paket boyutu, yerel ve uzak bilgisayarlar arasındaki yönlendirme düğümlerinden biri tarafından iletilebilecek en büyük paket boyutunu aşarsa, ICMP yankı iletisini içeren paket aktarım sırasında parçalanabilir. Parçalanmayı önlemek için parametre alan options yöntemlerden birini SendAsync kullanın ve özelliğini olarak trueayarlayınDontFragment. olduğunda DontFragmenttrue ve toplam paket boyutu, yerel ve uzak bilgisayarlar arasındaki yönlendirme düğümlerinden biri tarafından iletilebilen en büyük paket boyutunu aşarsa, ICMP yankı isteği başarısız olur. Bu durumda , Status olarak PacketTooBigayarlanır. Paket veya paket parçaları (parçalanmışsa) atılmadan önce yönlendirme düğümleri tarafından 128 kez iletilebilir. Bu ayarı değiştirmek için parametre alan bir SendAsyncoptions aşırı yükleme kullanın ve özelliği istenen değere ayarlayın Ttl . Paket belirtilen sayıda iletildikten sonra hedefine ulaşmazsa, paket atılır ve ICMP yankı isteği başarısız olur. Bu durumda , Status olarak TtlExpiredayarlanır.

Şunlara uygulanır

SendAsync(IPAddress, Int32, Object)

Kaynak:
Ping.cs
Kaynak:
Ping.cs
Kaynak:
Ping.cs

Belirtilen değerine sahip IPAddressbilgisayara zaman uyumsuz olarak bir İnternet Denetim İletisi Protokolü (ICMP) yankı iletisi göndermeye çalışır ve bu bilgisayardan karşılık gelen bir ICMP yankı yanıtı iletisi alır. Bu aşırı yükleme, işlem için bir zaman aşımı değeri belirtmenize olanak tanır.

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)

Parametreler

address
IPAddress

IPAddress ICMP yankı iletisinin hedefi olan bilgisayarı tanımlayan.

timeout
Int32

Int32 ICMP yankı yanıt iletisini beklemek için milisaniye (yankı iletisini gönderdikten sonra) sayısını belirten bir değer.

userToken
Object

Zaman uyumsuz işlem tamamlandığında çağrılan yöntemine geçirilen nesne.

Özel durumlar

address, null değeridir.

timeout, sıfırdan küçüktür.

Yöntemine SendAsync(IPAddress, Int32, Byte[], Object) yapılan çağrı devam ediyor.

ICMP iletileri gönderilirken veya alınırken bir özel durum oluştu. Oluşan tam özel durum için iç özel duruma bakın.

address geçerli bir IP adresi değil.

Bu nesne atılmış.

Örnekler

Aşırı yüklemeyi çağırmayı gösteren bir SendAsync kod örneği için bkz. sınıfa Ping genel bakış.

Açıklamalar

SendAsync yöntemi Echo iletisini zaman uyumsuz olarak gönderir ve işlem tamamlandığında (başarıyla veya başarısız olarak), durum değerini uygulamanıza döndürür. Uygulamanızın SendAsync engellememesi gerektiğinde yöntemini çağırın. Her çağrı, iş parçacığı havuzundan otomatik olarak ayrılan ayrı bir iş parçacığında yürütülür. Zaman uyumsuz işlem tamamlandığında olayı tetikler PingCompleted . Uygulamalar, olayı tetiklediğinde SendAsync çağrılan yöntemi belirtmek için bir PingCompletedEventHandler temsilci kullanır. çağrısı SendAsyncyapmadan önce olaya bir PingCompletedEventHandler temsilci eklemeniz gerekir. Temsilcinin yöntemi, çağrının sonucunu SendAsync açıklayan bir nesnesi içeren bir PingReply nesnesi alırPingCompletedEventArgs. PingCompletedEventArgs nesnesi özelliğini devralırUserState. Bu özellik çağrısına userTokenSendAsync geçirilen nesneyi içerir.

Uygulamanızın yanıt beklerken engellemesi gerekiyorsa yöntemlerini kullanın Send ; bu yöntemler zaman uyumludur.

ICMP yankı yanıt iletisi parametresi tarafından timeout belirtilen süre içinde alınmazsa, ICMP yankısı başarısız olur ve Status özelliği olarak TimedOutayarlanır.

Not

için timeoutçok küçük sayılar belirtilirken, milisaniyeler dolmuş olsa timeout bile Ping yanıtı alınabiliyor.

Bu aşırı yükleme, paket parçalanması ve paket iletme için varsayılan ayarları kullanır. Toplam paket boyutu, yerel ve uzak bilgisayarlar arasındaki yönlendirme düğümlerinden biri tarafından iletilebilecek en büyük paket boyutunu aşarsa, ICMP yankı iletisini içeren paket aktarım sırasında parçalanabilir. Parçalanmayı önlemek için parametre alan options yöntemlerden birini SendAsync kullanın ve özelliğini olarak trueayarlayınDontFragment. olduğunda DontFragmenttrue ve toplam paket boyutu, yerel ve uzak bilgisayarlar arasındaki yönlendirme düğümlerinden biri tarafından iletilebilen en büyük paket boyutunu aşarsa, ICMP yankı isteği başarısız olur. Bu durumda , Status olarak PacketTooBigayarlanır. Paket veya paket parçaları (parçalanmışsa) atılmadan önce yönlendirme düğümleri tarafından 128 kez iletilebilir. Bu ayarı değiştirmek için parametre alan bir SendAsyncoptions aşırı yükleme kullanın ve özelliği istenen değere ayarlayın Ttl . Paket belirtilen sayıda iletildikten sonra hedefine ulaşmazsa, paket atılır ve ICMP yankı isteği başarısız olur. Bu durumda , Status olarak TtlExpiredayarlanır.

Şunlara uygulanır

SendAsync(String, Object)

Kaynak:
Ping.cs
Kaynak:
Ping.cs
Kaynak:
Ping.cs

Belirtilen bilgisayara zaman uyumsuz olarak bir İnternet Denetim İletisi Protokolü (ICMP) yankı iletisi göndermeye çalışır ve bu bilgisayardan karşılık gelen bir ICMP yankı yanıt iletisi alır.

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)

Parametreler

hostNameOrAddress
String

String ICMP yankı iletisinin hedefi olan bilgisayarı tanımlayan. Bu parametre için belirtilen değer bir ana bilgisayar adı veya ip adresinin dize gösterimi olabilir.

userToken
Object

Zaman uyumsuz işlem tamamlandığında çağrılan yöntemine geçirilen nesne.

Özel durumlar

hostNameOrAddress veya null boş bir dizedir ("").

Yöntemine SendAsync(String, Object) yapılan çağrı devam ediyor.

ICMP iletileri gönderilirken veya alınırken bir özel durum oluştu. Oluşan tam özel durum için iç özel duruma bakın.

hostNameOrAddress geçerli bir IP adresine çözümlenemedi.

Bu nesne atılmış.

Örnekler

yöntemini çağırmayı gösteren bir kod örneği için sınıfa SendAsync genel bakış bölümüne Ping bakın.

Açıklamalar

SendAsync yöntemi, yankı iletisini zaman uyumsuz olarak gönderir ve işlem tamamlandığında (başarıyla veya başarısız olarak), durumunu uygulamanıza döndürür. Uygulamanızın SendAsync engellememesi gerektiğinde yöntemini çağırın. Bu yönteme yapılan her çağrı, iş parçacığı havuzundan otomatik olarak ayrılan ayrı bir iş parçacığında yürütülür. Zaman uyumsuz işlem tamamlandığında olayı tetikler PingCompleted . Olayı tetiklediğinde SendAsync çağrılan yöntemi belirtmek için çağırmadan önce SendAsyncolaya bir PingCompletedEventHandler temsilci eklemeniz gerekir. Temsilcinin yöntemi, çağrının sonucunu SendAsync açıklayan bir nesnesi içeren bir PingReply nesnesi alırPingCompletedEventArgs. PingCompletedEventArgs nesnesi özelliğini devralırUserState. Bu özellik çağrısına userTokenSendAsync geçirilen nesneyi içerir.

Not

Uygulamanızın yanıt beklerken engellemesi gerekiyorsa yöntemlerini kullanın Send ; bu yöntemler zaman uyumludur.

Bu yöntem, ICMP yankı iletisiyle birlikte 32 Byte veri arabelleği gönderir. yöntemi, ICMP yankı yanıt iletisi için beş saniye bekler. Bu süre içinde bir yanıt almazsa, yöntem döner ve Status özelliği olarak TimedOutayarlanır.

Bu aşırı yükleme, paket parçalanması ve paket iletme için varsayılan ayarları kullanır. Toplam paket boyutu, yerel ve uzak bilgisayarlar arasındaki yönlendirme düğümlerinden biri tarafından iletilebilecek en büyük paket boyutunu aşarsa, ICMP yankı iletisini içeren paket aktarım sırasında parçalanabilir. Parçalanmayı önlemek için parametre alan options yöntemlerden birini SendAsync kullanın ve özelliğini olarak trueayarlayınDontFragment. olduğunda DontFragmenttrue ve toplam paket boyutu, yerel ve uzak bilgisayarlar arasındaki yönlendirme düğümlerinden biri tarafından iletilebilen en büyük paket boyutunu aşarsa, ICMP yankı isteği başarısız olur. Bu durumda , Status olarak PacketTooBigayarlanır.

Paket veya paket parçaları, atılmadan önce yönlendirme düğümleri tarafından 128 kez iletilebilir. Bu ayarı değiştirmek için parametre alan bir SendAsyncoptions aşırı yükleme kullanın ve özelliği istenen değere ayarlayın Ttl . Paket belirtilen sayıda iletildikten sonra hedefine ulaşmazsa, paket atılır ve ICMP yankı isteği başarısız olur. Bu durumda , Status olarak TtlExpiredayarlanır.

Şunlara uygulanır

SendAsync(IPAddress, Object)

Kaynak:
Ping.cs
Kaynak:
Ping.cs
Kaynak:
Ping.cs

Belirtilen değerine sahip IPAddressbilgisayara zaman uyumsuz olarak bir İnternet Denetim İletisi Protokolü (ICMP) yankı iletisi göndermeye çalışır ve bu bilgisayardan karşılık gelen bir ICMP yankı yanıtı iletisi alır.

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)

Parametreler

address
IPAddress

IPAddress ICMP yankı iletisinin hedefi olan bilgisayarı tanımlayan.

userToken
Object

Zaman uyumsuz işlem tamamlandığında çağrılan yöntemine geçirilen nesne.

Özel durumlar

address, null değeridir.

yöntemine bir SendAsync çağrı devam ediyor.

ICMP iletileri gönderilirken veya alınırken bir özel durum oluştu. Oluşan tam özel durum için iç özel duruma bakın.

address geçerli bir IP adresi değil.

Bu nesne atılmış.

Örnekler

Bir yöntemi çağırmayı gösteren bir SendAsync kod örneği için sınıfa genel bakış bölümüne Ping bakın.

Açıklamalar

SendAsync yöntemi, yankı iletisini zaman uyumsuz olarak gönderir ve işlem tamamlandığında (başarıyla veya başarısız olarak), durumunu uygulamanıza döndürür. Uygulamanızın SendAsync engellememesi gerektiğinde yöntemini çağırın. Bu yönteme yapılan her çağrı, iş parçacığı havuzundan otomatik olarak ayrılan ayrı bir iş parçacığında yürütülür. Zaman uyumsuz işlem tamamlandığında olayı tetikler PingCompleted . Olayı tetiklediğinde SendAsync çağrılan yöntemi belirtmek için çağırmadan önce SendAsyncolaya bir PingCompletedEventHandler temsilci eklemeniz gerekir. Temsilcinin yöntemi, çağrının sonucunu SendAsync açıklayan bir nesnesi içeren bir PingReply nesnesi alırPingCompletedEventArgs. PingCompletedEventArgs nesnesi özelliğini devralırUserState. Bu özellik çağrısına userTokenSendAsync geçirilen nesneyi içerir.

Not

Uygulamanızın yanıt beklerken engellemesi gerekiyorsa yöntemlerden birini Send kullanın; bu yöntemler zaman uyumludur.

Bu yöntem, ICMP yankı iletisiyle birlikte 32 Byte veri arabelleği gönderir. yöntemi, ICMP yankı yanıt iletisi için beş saniye bekler. Bu süre içinde yanıt almazsa, yöntemi döndürür ve Status özelliği olarak TimedOutayarlanır.

Bu aşırı yükleme, paket parçalanması ve paket iletme için varsayılan ayarları kullanır. Toplam paket boyutu, yerel ve uzak bilgisayarlar arasındaki yönlendirme düğümlerinden biri tarafından iletilebilecek en büyük paket boyutunu aşarsa, ICMP yankı iletisini içeren paket aktarım sırasında parçalanabilir. Parçalanmayı önlemek için parametre alan options yöntemlerden birini SendAsync kullanın ve özelliğini olarak trueayarlayınDontFragment. olduğunda DontFragmenttrue ve toplam paket boyutu, yerel ve uzak bilgisayarlar arasındaki yönlendirme düğümlerinden biri tarafından iletilebilen en büyük paket boyutunu aşarsa, ICMP yankı isteği başarısız olur. Bu durumda , Status olarak PacketTooBigayarlanır.

Paket veya paket parçaları, atılmadan önce yönlendirme düğümleri tarafından 128 kez iletilebilir. Bu ayarı değiştirmek için parametre alan bir SendAsyncoptions aşırı yükleme kullanın ve özelliği istenen değere ayarlayın Ttl . Paket belirtilen sayıda iletildikten sonra hedefine ulaşmazsa, paket atılır ve ICMP yankı isteği başarısız olur. Bu durumda , Status olarak TtlExpiredayarlanır.

Şunlara uygulanır

SendAsync(String, Int32, Object)

Kaynak:
Ping.cs
Kaynak:
Ping.cs
Kaynak:
Ping.cs

Belirtilen bilgisayara zaman uyumsuz olarak bir İnternet Denetim İletisi Protokolü (ICMP) yankı iletisi göndermeye çalışır ve bu bilgisayardan karşılık gelen bir ICMP yankısı yanıt iletisi alır. Bu aşırı yükleme işlemi için bir zaman aşımı değeri belirtmenize olanak tanır.

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)

Parametreler

hostNameOrAddress
String

String ICMP yankı iletisinin hedefi olan bilgisayarı tanımlayan. Bu parametre için belirtilen değer bir ana bilgisayar adı veya IP adresinin dize gösterimi olabilir.

timeout
Int32

Int32 ICMP yankı yanıt iletisini beklemek için milisaniye (yankı iletisini gönderdikten sonra) maksimum sayısını belirten bir değer.

userToken
Object

Zaman uyumsuz işlem tamamlandığında çağrılan yöntemine geçirilen nesne.

Özel durumlar

hostNameOrAddress veya null boş bir dizedir ("").

timeout, sıfırdan küçüktür.

çağrısı SendAsync devam ediyor.

ICMP iletileri gönderilirken veya alınırken bir özel durum oluştu. Oluşan tam özel durum için iç özel duruma bakın.

hostNameOrAddress geçerli bir IP adresine çözümlenemedi.

Bu nesne atılmış.

Örnekler

yöntemini çağırmayı gösteren bir kod örneği için sınıfa SendAsync genel bakış bölümüne Ping bakın.

Açıklamalar

SendAsync yöntemi, Echo iletisini zaman uyumsuz olarak gönderir ve işlem tamamlandığında (başarıyla veya başarısız olarak), durumunu uygulamanıza döndürür. Uygulamanızın SendAsync engellememesi gerektiğinde yöntemini çağırın. Her çağrı, iş parçacığı havuzundan otomatik olarak ayrılan ayrı bir iş parçacığında yürütülür. Zaman uyumsuz işlem tamamlandığında olayı tetikler PingCompleted . Uygulamalar, olayı tetiklerken SendAsync çağrılan yöntemi belirtmek için bir PingCompletedEventHandler temsilci kullanır. çağrısı SendAsyncyapmadan önce olaya bir PingCompletedEventHandler temsilci eklemeniz gerekir. Temsilcinin yöntemi, çağrının sonucunu SendAsync açıklayan bir nesne içeren bir PingReply nesnesi alırPingCompletedEventArgs. PingCompletedEventArgs nesnesi özelliğini devralırUserState. Bu özellik çağrıya userTokenSendAsync geçirilen nesneyi içerir.

Uygulamanızın yanıt beklerken engellemesi gerekiyorsa yöntemlerini kullanın Send ; bu yöntemler zaman uyumlu olur.

ICMP yankı yanıt iletisi parametresi tarafından timeout belirtilen süre içinde alınmazsa, ICMP yankısı başarısız olur ve Status özelliği olarak TimedOutayarlanır.

Not

için timeoutçok küçük sayılar belirtilirken, milisaniyeler dolmuş olsa timeout bile Ping yanıtı alınabiliyor.

Bu aşırı yükleme, paket parçalanması ve paket iletme için varsayılan ayarları kullanır. Toplam paket boyutu, yerel ve uzak bilgisayarlar arasındaki yönlendirme düğümlerinden biri tarafından iletilebilen en büyük paket boyutunu aşarsa, ICMP yankı iletisini içeren paket aktarımda parçalanabilir. Parçalanmayı önlemek için parametre alan options yöntemlerden birini SendAsync kullanın ve özelliğini olarak trueayarlayınDontFragment. olduğunda DontFragmenttrue ve toplam paket boyutu, yerel ve uzak bilgisayarlar arasındaki yönlendirme düğümlerinden biri tarafından iletilebilen en büyük paket boyutunu aştığında, ICMP yankı isteği başarısız olur. Bu durumda, Status olarak ayarlanır PacketTooBig. Paket veya paket parçaları (parçalanmışsa) atılmadan önce yönlendirme düğümleri tarafından 128 kez iletilebilir. Bu ayarı değiştirmek için parametre alan bir SendAsyncoptions aşırı yükleme kullanın ve özelliğini istenen değere ayarlayın Ttl . Paket belirtilen sayıda iletildikten sonra hedefine ulaşmazsa, paket atılır ve ICMP yankı isteği başarısız olur. Bu durumda, Status olarak ayarlanır TtlExpired.

Şunlara uygulanır