Sdílet prostřednictvím


Ping.SendAsync Metoda

Definice

Asynchronně se pokusí odeslat zprávu odezvy protokolu ICMP (Internet Control Message Protocol) do počítače a přijmout odpovídající zprávu odpovědi ICMP z tohoto počítače.

Přetížení

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

Asynchronně se pokusí odeslat zprávu o odezvě protokolu ICMP (Internet Control Message Protocol) se zadanou vyrovnávací pamětí dat do zadaného počítače a obdrží odpovídající zprávu odezvy ICMP z tohoto počítače. Toto přetížení umožňuje zadat hodnotu časového limitu pro operaci a řídit fragmentaci a hodnoty Time-to-Live pro paket ICMP.

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

Asynchronně se pokusí odeslat zprávu odezvy protokolu ICMP (Internet Control Message Protocol) se zadanou datovou vyrovnávací pamětí do počítače, který má zadaný IPAddress, a obdrží odpovídající zprávu odezvy ICMP z tohoto počítače. Toto přetížení umožňuje zadat hodnotu časového limitu pro operaci a řídit fragmentaci a hodnoty Time-to-Live pro paket zpráv odezvy ICMP.

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

Asynchronně se pokusí odeslat zprávu o odezvě protokolu ICMP (Internet Control Message Protocol) se zadanou vyrovnávací pamětí dat do zadaného počítače a obdrží odpovídající zprávu odezvy ICMP z tohoto počítače. Toto přetížení umožňuje zadat hodnotu časového limitu operace.

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

Asynchronně se pokusí odeslat zprávu odezvy protokolu ICMP (Internet Control Message Protocol) se zadanou datovou vyrovnávací pamětí do počítače, který má zadaný IPAddress, a obdrží odpovídající zprávu odezvy ICMP z tohoto počítače. Toto přetížení umožňuje zadat hodnotu časového limitu operace.

SendAsync(IPAddress, Int32, Object)

Asynchronně se pokusí odeslat zprávu o odezvě protokolu ICMP (Internet Control Message Protocol) počítači, který má zadanou IPAddressodpověď , a obdrží odpovídající zprávu odezvy ICMP z tohoto počítače. Toto přetížení umožňuje zadat hodnotu časového limitu operace.

SendAsync(String, Object)

Asynchronně se pokusí odeslat zprávu o odezvě protokolu ICMP (Internet Control Message Protocol) do zadaného počítače a obdrží odpovídající zprávu odezvy ICMP z tohoto počítače.

SendAsync(IPAddress, Object)

Asynchronně se pokusí odeslat zprávu o odezvě protokolu ICMP (Internet Control Message Protocol) počítači, který má zadanou IPAddressodpověď , a obdrží odpovídající zprávu odezvy ICMP z tohoto počítače.

SendAsync(String, Int32, Object)

Asynchronně se pokusí odeslat zprávu o odezvě protokolu ICMP (Internet Control Message Protocol) do zadaného počítače a obdrží odpovídající zprávu odezvy ICMP z tohoto počítače. Toto přetížení umožňuje zadat hodnotu časového limitu operace.

Poznámky

Tyto metody nezpůsobí blokování hlavního vlákna vaší aplikace. Pokud chcete blokovat při čekání na odpověď odezvy Send PROTOKOLU ICMP, použijte metody.

Poznámka:

IP adresa vrácená některou z SendAsync metod může pocházet ze vzdáleného počítače se zlými úmysly. Nepřipojit se ke vzdálenému počítači pomocí tohoto nastavení. Pomocí DNS určete IP adresu počítače, ke kterému se chcete připojit.

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

Zdroj:
Ping.cs
Zdroj:
Ping.cs
Zdroj:
Ping.cs
Zdroj:
Ping.cs
Zdroj:
Ping.cs

Asynchronně se pokusí odeslat zprávu o odezvě protokolu ICMP (Internet Control Message Protocol) se zadanou vyrovnávací pamětí dat do zadaného počítače a obdrží odpovídající zprávu odezvy ICMP z tohoto počítače. Toto přetížení umožňuje zadat hodnotu časového limitu pro operaci a řídit fragmentaci a hodnoty Time-to-Live pro paket 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)

Parametry

hostNameOrAddress
String

A String , který identifikuje počítač, který je cílem zprávy odezvy ICMP. Hodnota zadaná pro tento parametr může být název hostitele nebo řetězcová reprezentace IP adresy.

timeout
Int32

Hodnota Int32 , která určuje maximální počet milisekund (po odeslání zprávy echo) počkat na odpověď odezvy ICMP.

buffer
Byte[]

Pole Byte obsahující data, která mají být odeslána se zprávou odezvy ICMP a vrácenou ve zprávě odpovědi odezvy ICMP. Pole nesmí obsahovat více než 65 500 bajtů.

options
PingOptions

Objekt PingOptions sloužící k řízení fragmentace a hodnot Time-to-Live paketu s odezvou PROTOKOLU ICMP.

userToken
Object

Objekt, který se předá metodě vyvolá při dokončení asynchronní operace.

Výjimky

hostNameOrAddress je null nebo je prázdný řetězec ("").

nebo

buffer je null.

Hodnota timeout je menší než nula.

Probíhá volání SendAsync .

Při odesílání nebo příjmu zpráv ICMP došlo k výjimce. Podívejte se na vnitřní výjimku pro přesnou výjimku, která byla vyvolán.

hostNameOrAddress nelze přeložit na platnou IP adresu.

Tento objekt byl odstraněn.

Velikost buffer překračuje 65500 bajtů.

.NET 7 a novější verze pouze v Linuxu: Proces není privilegovaný a buffer není prázdný.

Příklady

Následující příklad kódu ukazuje, jak volat tuto metodu.

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

Poznámky

Metoda SendAsync odešle zprávu Echo asynchronně a po dokončení operace (úspěšně nebo neúspěšně) vrátí stav vaší aplikace. Volejte metodu SendAsync , když aplikace nesmí blokovat. Každé volání se provede v samostatném vlákně, které je automaticky přiděleno z fondu vláken. Po dokončení PingCompleted asynchronní operace vyvolá událost. Aplikace používají PingCompletedEventHandler delegáta k určení metody, která je volána při SendAsync vyvolání události. Před voláním PingCompletedEventHandlerSendAsyncmusíte do události přidat delegáta . Metoda delegáta PingCompletedEventArgs obdrží objekt, který obsahuje PingReply objekt, který popisuje výsledek SendAsync volání. Objekt PingCompletedEventArgs dědí UserState vlastnost. Tato vlastnost obsahuje userToken objekt předaný do SendAsync volání.

Pokud by vaše aplikace měla blokovat při čekání na odpověď, použijte Send metody; tyto metody jsou synchronní.

Pokud odpověď odezvy ICMP není přijata v době určené parametrem timeout , odezva ICMP selže a Status vlastnost je nastavena na TimedOut.

Poznámka:

Při zadávání velmi malých čísel pro timeoutodpověď Ping lze přijímat i v případě, že timeout uplynuly milisekundy.

DontFragment Pokud je true vlastnost a celková velikost paketů překračuje maximální velikost paketu, kterou může přenášet jeden z uzlů směrování mezi místními a vzdálenými počítači, požadavek na odezvu ICMP selže. V takovém případě je nastavena Status na PacketTooBighodnotu .

Ttl Pomocí vlastnosti určete maximální počet, kolikrát může být zpráva odezvy ICMP před dosažením cíle přeposlána. Pokud se paket po předání zadaného počtu nedosáhne do cíle, paket se zahodí a požadavek na odezvu PROTOKOLU ICMP selže. V takovém případě je nastavena Status na TtlExpiredhodnotu .

Platí pro

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

Zdroj:
Ping.cs
Zdroj:
Ping.cs
Zdroj:
Ping.cs
Zdroj:
Ping.cs
Zdroj:
Ping.cs

Asynchronně se pokusí odeslat zprávu odezvy protokolu ICMP (Internet Control Message Protocol) se zadanou datovou vyrovnávací pamětí do počítače, který má zadaný IPAddress, a obdrží odpovídající zprávu odezvy ICMP z tohoto počítače. Toto přetížení umožňuje zadat hodnotu časového limitu pro operaci a řídit fragmentaci a hodnoty Time-to-Live pro paket zpráv odezvy 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)

Parametry

address
IPAddress

Určuje IPAddress počítač, který je cílem zprávy odezvy ICMP.

timeout
Int32

Hodnota Int32 , která určuje maximální počet milisekund (po odeslání zprávy echo) počkat na odpověď odezvy ICMP.

buffer
Byte[]

Pole Byte obsahující data, která mají být odeslána se zprávou odezvy ICMP a vrácenou ve zprávě odpovědi odezvy ICMP. Pole nesmí obsahovat více než 65 500 bajtů.

options
PingOptions

Objekt PingOptions sloužící k řízení fragmentace a hodnot Time-to-Live paketu s odezvou PROTOKOLU ICMP.

userToken
Object

Objekt, který se předá metodě vyvolá při dokončení asynchronní operace.

Výjimky

address nebo buffer je null.

Hodnota timeout je menší než nula.

Probíhá volání SendAsync .

Při odesílání nebo příjmu zpráv ICMP došlo k výjimce. Podívejte se na vnitřní výjimku pro přesnou výjimku, která byla vyvolán.

address není platná IP adresa.

Tento objekt byl odstraněn.

Velikost buffer překračuje 65500 bajtů.

.NET 7 a novější verze pouze v Linuxu: Proces není privilegovaný a buffer není prázdný.

Příklady

Následující příklad kódu ukazuje, jak volat tuto metodu. Implementace metody zpětného volání naleznete v SendAsync ukázkové části přetížení metody.

Následující příklad kódu vyžaduje následující obory názvů:

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

Následující příklad kódu odešle zprávu odezvy ICMP asynchronně.

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

Poznámky

Metoda SendAsync odešle zprávu Echo asynchronně a po dokončení operace (úspěšně nebo neúspěšně) vrátí stav vaší aplikace. Volejte metodu SendAsync , když aplikace nesmí blokovat. Každé volání se provede v samostatném vlákně, které je automaticky přiděleno z fondu vláken. Po dokončení PingCompleted asynchronní operace vyvolá událost. Aplikace používají PingCompletedEventHandler delegáta k určení metody, která je volána při SendAsync vyvolání události. Před voláním PingCompletedEventHandlerSendAsyncmusíte do události přidat delegáta . Metoda delegáta PingCompletedEventArgs obdrží objekt, který obsahuje PingReply objekt, který popisuje výsledek SendAsync volání. Objekt PingCompletedEventArgs dědí UserState vlastnost. Tato vlastnost obsahuje userToken objekt předaný do SendAsync volání.

Pokud vaše aplikace blokuje při čekání na odpověď, použijte Send metody; tyto metody jsou synchronní.

Pokud odpověď odezvy ICMP není přijata v době určené parametrem timeout , odezva ICMP selže a Status vlastnost je nastavena na TimedOut.

Poznámka:

Při zadávání velmi malých čísel pro timeoutodpověď Ping lze přijímat i v případě, že timeout uplynuly milisekundy.

DontFragment Pokud je true vlastnost a celková velikost paketů překračuje maximální velikost paketu, kterou může přenášet jeden z uzlů směrování mezi místními a vzdálenými počítači, požadavek na odezvu ICMP selže. V takovém případě je nastavena Status na PacketTooBighodnotu .

Ttl Pomocí vlastnosti určete maximální počet, kolikrát může být zpráva odezvy ICMP před dosažením cíle přeposlána. Pokud se paket po předání zadaného počtu nedosáhne do cíle, paket se zahodí a požadavek na odezvu PROTOKOLU ICMP selže. V takovém případě je nastavena Status na TtlExpiredhodnotu .

Platí pro

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

Zdroj:
Ping.cs
Zdroj:
Ping.cs
Zdroj:
Ping.cs
Zdroj:
Ping.cs
Zdroj:
Ping.cs

Asynchronně se pokusí odeslat zprávu o odezvě protokolu ICMP (Internet Control Message Protocol) se zadanou vyrovnávací pamětí dat do zadaného počítače a obdrží odpovídající zprávu odezvy ICMP z tohoto počítače. Toto přetížení umožňuje zadat hodnotu časového limitu operace.

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)

Parametry

hostNameOrAddress
String

A String , který identifikuje počítač, který je cílem zprávy odezvy ICMP. Hodnota zadaná pro tento parametr může být název hostitele nebo řetězcová reprezentace IP adresy.

timeout
Int32

Hodnota Int32 , která určuje maximální počet milisekund (po odeslání zprávy echo) počkat na odpověď odezvy ICMP.

buffer
Byte[]

Pole Byte obsahující data, která mají být odeslána se zprávou odezvy ICMP a vrácenou ve zprávě odpovědi odezvy ICMP. Pole nesmí obsahovat více než 65 500 bajtů.

userToken
Object

Objekt, který se předá metodě vyvolá při dokončení asynchronní operace.

Výjimky

hostNameOrAddress je null nebo je prázdný řetězec ("").

nebo

buffer je null.

Hodnota timeout je menší než nula.

Probíhá volání SendAsync .

Při odesílání nebo příjmu zpráv ICMP došlo k výjimce. Podívejte se na vnitřní výjimku pro přesnou výjimku, která byla vyvolán.

hostNameOrAddress nelze přeložit na platnou IP adresu.

Tento objekt byl odstraněn.

Velikost buffer překračuje 65500 bajtů.

.NET 7 a novější verze pouze v Linuxu: Proces není privilegovaný a buffer není prázdný.

Příklady

Následující příklad kódu ukazuje, jak volat SendAsync přetížení, viz Ping přehled třídy.

Poznámky

Metoda SendAsync odešle zprávu Echo asynchronně a po dokončení operace (úspěšně nebo neúspěšně) vrátí stav vaší aplikace. Volejte metodu SendAsync , když by aplikace neměla blokovat. Každé volání se provede v samostatném vlákně, které je automaticky přiděleno z fondu vláken. Po dokončení PingCompleted asynchronní operace vyvolá událost. Aplikace používají PingCompletedEventHandler delegáta k určení metody, která je volána při SendAsync vyvolání události. Před voláním PingCompletedEventHandlerSendAsyncmusíte do události přidat delegáta . Metoda delegáta PingCompletedEventArgs obdrží objekt obsahující PingReply objekt, který popisuje výsledek SendAsync volání. Objekt PingCompletedEventArgs dědí UserState vlastnost. Tato vlastnost obsahuje userToken objekt předaný do SendAsync volání.

Pokud by vaše aplikace měla blokovat při čekání na odpověď, použijte Send metody; tyto metody jsou synchronní.

Pokud odpověď odezvy ICMP není přijata v době určené parametrem timeout , odezva ICMP selže a Status vlastnost je nastavena na TimedOut.

Poznámka:

Při zadávání velmi malých čísel pro timeoutodpověď Ping lze přijímat i v případě, že timeout uplynuly milisekundy.

Toto přetížení používá výchozí nastavení pro fragmentaci paketů a předávání paketů. Paket, který obsahuje zprávu odezvy PROTOKOLU ICMP, je možné během přenosu fragmentovat, pokud celková velikost paketu překračuje maximální velikost paketu, kterou může přenášet jeden z uzlů směrování mezi místními a vzdálenými počítači. Chcete-li zabránit fragmentaci, použijte jednu z SendAsync metod, která přebírá options parametr, a nastavte DontFragment vlastnost na true. Pokud DontFragment je true a celková velikost paketů překračuje maximální velikost paketu, kterou může přenášet jeden z uzlů směrování mezi místními a vzdálenými počítači, požadavek na odezvu ICMP selže. V takovém případě je nastavena Status na PacketTooBighodnotu . Pakety nebo fragmenty paketů (pokud jsou fragmentované) je možné předávat 128krát před zahozením směrovacích uzlů. Chcete-li toto nastavení změnit, použijte SendAsync přetížení, které přebírá options parametr, a nastavte Ttl vlastnost na požadovanou hodnotu. Pokud se paket po předání zadaného počtu nedosáhne do cíle, paket se zahodí a požadavek na odezvu PROTOKOLU ICMP selže. V takovém případě je nastavena Status na TtlExpiredhodnotu .

Platí pro

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

Zdroj:
Ping.cs
Zdroj:
Ping.cs
Zdroj:
Ping.cs
Zdroj:
Ping.cs
Zdroj:
Ping.cs

Asynchronně se pokusí odeslat zprávu odezvy protokolu ICMP (Internet Control Message Protocol) se zadanou datovou vyrovnávací pamětí do počítače, který má zadaný IPAddress, a obdrží odpovídající zprávu odezvy ICMP z tohoto počítače. Toto přetížení umožňuje zadat hodnotu časového limitu operace.

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)

Parametry

address
IPAddress

Určuje IPAddress počítač, který je cílem zprávy odezvy ICMP.

timeout
Int32

Hodnota Int32 , která určuje maximální počet milisekund (po odeslání zprávy echo) počkat na odpověď odezvy ICMP.

buffer
Byte[]

Pole Byte obsahující data, která mají být odeslána se zprávou odezvy ICMP a vrácenou ve zprávě odpovědi odezvy ICMP. Pole nesmí obsahovat více než 65 500 bajtů.

userToken
Object

Objekt, který se předá metodě vyvolá při dokončení asynchronní operace.

Výjimky

address nebo buffer je null.

Hodnota timeout je menší než nula.

Probíhá volání SendAsync .

Při odesílání nebo příjmu zpráv ICMP došlo k výjimce. Podívejte se na vnitřní výjimku pro přesnou výjimku, která byla vyvolán.

address není platná IP adresa.

Tento objekt byl odstraněn.

Velikost buffer překračuje 65500 bajtů.

.NET 7 a novější verze pouze v Linuxu: Proces není privilegovaný a buffer není prázdný.

Příklady

Příklad kódu, který ukazuje volání SendAsync přetížení, naleznete v přehledu Ping třídy.

Poznámky

Tato metoda odešle zprávu echo asynchronně a po dokončení operace (úspěšně nebo neúspěšně) vrátí stav vaší aplikace. Volejte metodu SendAsync , když by aplikace neměla blokovat. Každé volání se provede v samostatném vlákně, které je automaticky přiděleno z fondu vláken. Po dokončení PingCompleted asynchronní operace vyvolá událost. Chcete-li určit metodu, která je volána při SendAsync vyvolání události, musíte před voláním PingCompletedEventHandlerSendAsyncpřidat delegáta události . Metoda delegáta PingCompletedEventArgs obdrží objekt, který obsahuje PingReply objekt, který popisuje výsledek SendAsync volání. Objekt PingCompletedEventArgs dědí UserState vlastnost. Tato vlastnost obsahuje userToken objekt předaný do SendAsync volání.

Poznámka:

Pokud vaše aplikace blokuje při čekání na odpověď, použijte Send metody; tyto metody jsou synchronní.

Pokud odpověď odezvy ICMP není přijata v době určené parametrem timeout , odezva ICMP selže a Status vlastnost je nastavena na TimedOut.

Poznámka:

Při zadávání velmi malých čísel pro timeoutodpověď Ping lze přijímat i v případě, že timeout uplynuly milisekundy.

Toto přetížení používá výchozí nastavení pro fragmentaci paketů a předávání paketů. Paket, který obsahuje zprávu odezvy PROTOKOLU ICMP, je možné během přenosu fragmentovat, pokud celková velikost paketu překračuje maximální velikost paketu, kterou může přenášet jeden z uzlů směrování mezi místními a vzdálenými počítači. Chcete-li zabránit fragmentaci, použijte jednu z SendAsync metod, která přebírá options parametr, a nastavte DontFragment vlastnost na true. Pokud DontFragment je true a celková velikost paketů překračuje maximální velikost paketu, kterou může přenášet jeden z uzlů směrování mezi místními a vzdálenými počítači, požadavek na odezvu ICMP selže. V takovém případě je nastavena Status na PacketTooBighodnotu . Pakety nebo fragmenty paketů (pokud jsou fragmentované) je možné předávat 128krát před zahozením směrovacích uzlů. Chcete-li toto nastavení změnit, použijte SendAsync přetížení, které přebírá options parametr, a nastavte Ttl vlastnost na požadovanou hodnotu. Pokud se paket po předání zadaného počtu nedosáhne do cíle, paket se zahodí a požadavek na odezvu PROTOKOLU ICMP selže. V takovém případě je nastavena Status na TtlExpiredhodnotu .

Platí pro

SendAsync(IPAddress, Int32, Object)

Zdroj:
Ping.cs
Zdroj:
Ping.cs
Zdroj:
Ping.cs
Zdroj:
Ping.cs
Zdroj:
Ping.cs

Asynchronně se pokusí odeslat zprávu o odezvě protokolu ICMP (Internet Control Message Protocol) počítači, který má zadanou IPAddressodpověď , a obdrží odpovídající zprávu odezvy ICMP z tohoto počítače. Toto přetížení umožňuje zadat hodnotu časového limitu operace.

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)

Parametry

address
IPAddress

Určuje IPAddress počítač, který je cílem zprávy odezvy ICMP.

timeout
Int32

Hodnota Int32 , která určuje maximální počet milisekund (po odeslání zprávy echo) počkat na odpověď odezvy ICMP.

userToken
Object

Objekt, který se předá metodě vyvolá při dokončení asynchronní operace.

Výjimky

address je null.

Hodnota timeout je menší než nula.

Při odesílání nebo příjmu zpráv ICMP došlo k výjimce. Podívejte se na vnitřní výjimku pro přesnou výjimku, která byla vyvolán.

address není platná IP adresa.

Tento objekt byl odstraněn.

Příklady

Příklad kódu, který ukazuje volání SendAsync přetížení, naleznete v přehledu Ping třídy.

Poznámky

Metoda SendAsync odešle zprávu Echo asynchronně a po dokončení operace (úspěšně nebo neúspěšně) vrátí stav vaší aplikace. Volejte metodu SendAsync , když by aplikace neměla blokovat. Každé volání se provede v samostatném vlákně, které je automaticky přiděleno z fondu vláken. Po dokončení PingCompleted asynchronní operace vyvolá událost. Aplikace používají PingCompletedEventHandler delegáta k určení metody, která je volána při SendAsync vyvolání události. Před voláním PingCompletedEventHandlerSendAsyncmusíte do události přidat delegáta . Metoda delegáta PingCompletedEventArgs obdrží objekt, který obsahuje PingReply objekt, který popisuje výsledek SendAsync volání. Objekt PingCompletedEventArgs dědí UserState vlastnost. Tato vlastnost obsahuje userToken objekt předaný do SendAsync volání.

Pokud by vaše aplikace měla blokovat při čekání na odpověď, použijte Send metody; tyto metody jsou synchronní.

Pokud odpověď odezvy ICMP není přijata v době určené parametrem timeout , odezva ICMP selže a Status vlastnost je nastavena na TimedOut.

Poznámka:

Při zadávání velmi malých čísel pro timeoutodpověď Ping lze přijímat i v případě, že timeout uplynuly milisekundy.

Toto přetížení používá výchozí nastavení pro fragmentaci paketů a předávání paketů. Paket, který obsahuje zprávu odezvy PROTOKOLU ICMP, je možné během přenosu fragmentovat, pokud celková velikost paketu překračuje maximální velikost paketu, kterou může přenášet jeden z uzlů směrování mezi místními a vzdálenými počítači. Chcete-li zabránit fragmentaci, použijte jednu z SendAsync metod, která přebírá options parametr, a nastavte DontFragment vlastnost na true. Pokud DontFragment je true a celková velikost paketů překračuje maximální velikost paketu, kterou může přenášet jeden z uzlů směrování mezi místními a vzdálenými počítači, požadavek na odezvu ICMP selže. V takovém případě je nastavena Status na PacketTooBighodnotu . Pakety nebo fragmenty paketů (pokud jsou fragmentované) je možné předávat 128krát před zahozením směrovacích uzlů. Chcete-li toto nastavení změnit, použijte SendAsync přetížení, které přebírá options parametr, a nastavte Ttl vlastnost na požadovanou hodnotu. Pokud se paket po předání zadaného počtu nedosáhne do cíle, paket se zahodí a požadavek na odezvu PROTOKOLU ICMP selže. V takovém případě je nastavena Status na TtlExpiredhodnotu .

Platí pro

SendAsync(String, Object)

Zdroj:
Ping.cs
Zdroj:
Ping.cs
Zdroj:
Ping.cs
Zdroj:
Ping.cs
Zdroj:
Ping.cs

Asynchronně se pokusí odeslat zprávu o odezvě protokolu ICMP (Internet Control Message Protocol) do zadaného počítače a obdrží odpovídající zprávu odezvy ICMP z tohoto počítače.

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)

Parametry

hostNameOrAddress
String

A String , který identifikuje počítač, který je cílem zprávy odezvy ICMP. Hodnota zadaná pro tento parametr může být název hostitele nebo řetězcová reprezentace IP adresy.

userToken
Object

Objekt, který se předá metodě vyvolá při dokončení asynchronní operace.

Výjimky

hostNameOrAddress je null nebo je prázdný řetězec ("").

Při odesílání nebo příjmu zpráv ICMP došlo k výjimce. Podívejte se na vnitřní výjimku pro přesnou výjimku, která byla vyvolán.

hostNameOrAddress nelze přeložit na platnou IP adresu.

Tento objekt byl odstraněn.

Příklady

Příklad kódu, který ukazuje volání SendAsync metody, naleznete v přehledu Ping třídy.

Poznámky

Metoda SendAsync odešle zprávu echo asynchronně a po dokončení operace (úspěšně nebo neúspěšně) vrátí stav vaší aplikace. Volejte metodu SendAsync , když by aplikace neměla blokovat. Každé volání této metody se spustí v samostatném vlákně, které je automaticky přiděleno z fondu vláken. Po dokončení PingCompleted asynchronní operace vyvolá událost. Chcete-li určit metodu, která je volána při SendAsync vyvolání události, musíte před voláním PingCompletedEventHandlerSendAsyncpřidat delegáta události . Metoda delegáta PingCompletedEventArgs obdrží objekt, který obsahuje PingReply objekt, který popisuje výsledek SendAsync volání. Objekt PingCompletedEventArgs dědí UserState vlastnost. Tato vlastnost obsahuje userToken objekt předaný do SendAsync volání.

Poznámka:

Pokud by vaše aplikace měla blokovat při čekání na odpověď, použijte Send metody; tyto metody jsou synchronní.

Tato metoda odešle 32 Byte datovou vyrovnávací paměť se zprávou odezvy ICMP. Metoda čeká pět sekund na zprávu odpovědi odezvy ICMP. Pokud neobdrží odpověď v této době metoda vrátí a Status vlastnost je nastavena na TimedOut.

Toto přetížení používá výchozí nastavení pro fragmentaci paketů a předávání paketů. Paket, který obsahuje zprávu odezvy PROTOKOLU ICMP, je možné během přenosu fragmentovat, pokud celková velikost paketu překračuje maximální velikost paketu, kterou může přenášet jeden z uzlů směrování mezi místními a vzdálenými počítači. Chcete-li zabránit fragmentaci, použijte jednu z SendAsync metod, která přebírá options parametr, a nastavte DontFragment vlastnost na true. Pokud DontFragment je true a celková velikost paketů překračuje maximální velikost paketu, kterou může přenášet jeden z uzlů směrování mezi místními a vzdálenými počítači, požadavek na odezvu ICMP selže. V takovém případě je nastavena Status na PacketTooBighodnotu .

Pakety nebo fragmenty paketů lze předávat směrovacími uzly 128krát předtím, než se zahodí. Chcete-li toto nastavení změnit, použijte SendAsync přetížení, které přebírá options parametr, a nastavte Ttl vlastnost na požadovanou hodnotu. Pokud se paket po předání zadaného počtu nedosáhne do cíle, paket se zahodí a požadavek na odezvu PROTOKOLU ICMP selže. V takovém případě je nastavena Status na TtlExpiredhodnotu .

Platí pro

SendAsync(IPAddress, Object)

Zdroj:
Ping.cs
Zdroj:
Ping.cs
Zdroj:
Ping.cs
Zdroj:
Ping.cs
Zdroj:
Ping.cs

Asynchronně se pokusí odeslat zprávu o odezvě protokolu ICMP (Internet Control Message Protocol) počítači, který má zadanou IPAddressodpověď , a obdrží odpovídající zprávu odezvy ICMP z tohoto počítače.

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)

Parametry

address
IPAddress

Určuje IPAddress počítač, který je cílem zprávy odezvy ICMP.

userToken
Object

Objekt, který se předá metodě vyvolá při dokončení asynchronní operace.

Výjimky

address je null.

Probíhá volání SendAsync metody.

Při odesílání nebo příjmu zpráv ICMP došlo k výjimce. Podívejte se na vnitřní výjimku pro přesnou výjimku, která byla vyvolán.

address není platná IP adresa.

Tento objekt byl odstraněn.

Příklady

Příklad kódu, který ukazuje volání SendAsync metody, naleznete v přehledu Ping třídy.

Poznámky

Metoda SendAsync odešle zprávu echo asynchronně a po dokončení operace (úspěšně nebo neúspěšně) vrátí stav vaší aplikace. Volejte metodu SendAsync , když by aplikace neměla blokovat. Každé volání této metody se spustí v samostatném vlákně, které je automaticky přiděleno z fondu vláken. Po dokončení PingCompleted asynchronní operace vyvolá událost. Chcete-li určit metodu, která je volána při SendAsync vyvolání události, musíte před voláním PingCompletedEventHandlerSendAsyncpřidat delegáta události . Metoda delegáta PingCompletedEventArgs obdrží objekt, který obsahuje PingReply objekt, který popisuje výsledek SendAsync volání. Objekt PingCompletedEventArgs dědí UserState vlastnost. Tato vlastnost obsahuje userToken objekt předaný do SendAsync volání.

Poznámka:

Pokud by vaše aplikace měla blokovat při čekání na odpověď, použijte jednu z Send metod; tyto metody jsou synchronní.

Tato metoda odešle 32 Byte datovou vyrovnávací paměť se zprávou odezvy ICMP. Metoda čeká pět sekund na zprávu odpovědi odezvy ICMP. Pokud v této době neobdrží odpověď, metoda vrátí a Status vlastnost je nastavena na TimedOut.

Toto přetížení používá výchozí nastavení pro fragmentaci paketů a předávání paketů. Paket, který obsahuje zprávu odezvy PROTOKOLU ICMP, je možné během přenosu fragmentovat, pokud celková velikost paketu překračuje maximální velikost paketu, kterou může přenášet jeden z uzlů směrování mezi místními a vzdálenými počítači. Chcete-li zabránit fragmentaci, použijte jednu z SendAsync metod, která přebírá options parametr, a nastavte DontFragment vlastnost na true. Pokud DontFragment je true a celková velikost paketů překračuje maximální velikost paketu, kterou může přenášet jeden z uzlů směrování mezi místními a vzdálenými počítači, požadavek na odezvu ICMP selže. V takovém případě je nastavena Status na PacketTooBighodnotu .

Pakety nebo fragmenty paketů lze předávat směrovacími uzly 128krát předtím, než se zahodí. Chcete-li toto nastavení změnit, použijte SendAsync přetížení, které přebírá options parametr, a nastavte Ttl vlastnost na požadovanou hodnotu. Pokud se paket po předání zadaného počtu nedosáhne do cíle, paket se zahodí a požadavek na odezvu PROTOKOLU ICMP selže. V takovém případě je nastavena Status na TtlExpiredhodnotu .

Platí pro

SendAsync(String, Int32, Object)

Zdroj:
Ping.cs
Zdroj:
Ping.cs
Zdroj:
Ping.cs
Zdroj:
Ping.cs
Zdroj:
Ping.cs

Asynchronně se pokusí odeslat zprávu o odezvě protokolu ICMP (Internet Control Message Protocol) do zadaného počítače a obdrží odpovídající zprávu odezvy ICMP z tohoto počítače. Toto přetížení umožňuje zadat hodnotu časového limitu operace.

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)

Parametry

hostNameOrAddress
String

A String , který identifikuje počítač, který je cílem zprávy odezvy ICMP. Hodnota zadaná pro tento parametr může být název hostitele nebo řetězcová reprezentace IP adresy.

timeout
Int32

Hodnota Int32 , která určuje maximální počet milisekund (po odeslání zprávy echo) počkat na odpověď odezvy ICMP.

userToken
Object

Objekt, který se předá metodě vyvolá při dokončení asynchronní operace.

Výjimky

hostNameOrAddress je null nebo je prázdný řetězec ("").

Hodnota timeout je menší než nula.

Probíhá volání SendAsync .

Při odesílání nebo příjmu zpráv ICMP došlo k výjimce. Podívejte se na vnitřní výjimku pro přesnou výjimku, která byla vyvolán.

hostNameOrAddress nelze přeložit na platnou IP adresu.

Tento objekt byl odstraněn.

Příklady

Příklad kódu, který ukazuje volání SendAsync metody, naleznete v přehledu Ping třídy.

Poznámky

Metoda SendAsync odešle zprávu Echo asynchronně a po dokončení operace (úspěšně nebo neúspěšně) vrátí stav vaší aplikace. Volejte metodu SendAsync , když by aplikace neměla blokovat. Každé volání se provede v samostatném vlákně, které je automaticky přiděleno z fondu vláken. Po dokončení PingCompleted asynchronní operace vyvolá událost. Aplikace používají PingCompletedEventHandler delegáta k určení metody, která je volána při SendAsync vyvolání události. Před voláním PingCompletedEventHandlerSendAsyncmusíte do události přidat delegáta . Metoda delegáta PingCompletedEventArgs obdrží objekt, který obsahuje PingReply objekt, který popisuje výsledek SendAsync volání. Objekt PingCompletedEventArgs dědí UserState vlastnost. Tato vlastnost obsahuje userToken objekt předaný do SendAsync volání.

Pokud by vaše aplikace měla blokovat při čekání na odpověď, použijte Send metody; tyto metody jsou synchronní.

Pokud odpověď odezvy ICMP není přijata v době určené parametrem timeout , odezva ICMP selže a Status vlastnost je nastavena na TimedOut.

Poznámka:

Při zadávání velmi malých čísel pro timeoutodpověď Ping lze přijímat i v případě, že timeout uplynuly milisekundy.

Toto přetížení používá výchozí nastavení pro fragmentaci paketů a předávání paketů. Paket, který obsahuje zprávu odezvy PROTOKOLU ICMP, je možné během přenosu fragmentovat, pokud celková velikost paketu překračuje maximální velikost paketu, kterou může přenášet jeden z uzlů směrování mezi místními a vzdálenými počítači. Chcete-li zabránit fragmentaci, použijte jednu z SendAsync metod, která přebírá options parametr, a nastavte DontFragment vlastnost na true. Pokud DontFragment je true a celková velikost paketů překračuje maximální velikost paketu, kterou může přenášet jeden z uzlů směrování mezi místními a vzdálenými počítači, požadavek na odezvu ICMP selže. V takovém případě je nastavena Status na PacketTooBighodnotu . Pakety nebo fragmenty paketů (pokud jsou fragmentované) je možné předávat 128krát před zahozením směrovacích uzlů. Chcete-li toto nastavení změnit, použijte SendAsync přetížení, které přebírá options parametr, a nastavte Ttl vlastnost na požadovanou hodnotu. Pokud se paket po předání zadaného počtu nedosáhne do cíle, paket se zahodí a požadavek na odezvu PROTOKOLU ICMP selže. V takovém případě je nastavena Status na TtlExpiredhodnotu .

Platí pro