Ping.SendAsync Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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 userToken
SendAsync 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
- 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 userToken
SendAsync 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 userToken
SendAsync 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 true
ayarlayı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
- 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 userToken
SendAsync 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 true
ayarlayı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
- 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 userToken
SendAsync 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 true
ayarlayı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 userToken
SendAsync 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 true
ayarlayı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
- 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 userToken
SendAsync 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 true
ayarlayı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 userToken
SendAsync 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 true
ayarlayı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.