Ping.SendAsync Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Tenta de forma assíncrona enviar uma mensagem de eco do Internet Control Message Protocol (ICMP) para um computador e receber uma correspondente mensagem de resposta de eco ICMP desse computador.
Sobrecargas
| Name | Description |
|---|---|
| SendAsync(String, Int32, Byte[], PingOptions, Object) |
Tenta de forma assíncrona enviar uma mensagem de eco do Internet Control Message Protocol (ICMP) com o buffer de dados especificado para o computador especificado, e receber uma correspondente mensagem de resposta de eco ICMP desse computador. Esta sobrecarga permite especificar um valor de time-out para a operação e a fragmentação de controlo e valores Time-to-Live para o pacote ICMP. |
| SendAsync(IPAddress, Int32, Byte[], PingOptions, Object) |
Tenta de forma assíncrona enviar uma mensagem de eco do Internet Control Message Protocol (ICMP) com o buffer de dados especificado para o computador que possui o especificado IPAddress, e receber uma correspondente mensagem de resposta de eco ICMP desse computador. Esta sobrecarga permite especificar um valor de time-out para a operação e controlar os valores de fragmentação e Time-to-Live para o pacote de mensagens de eco ICMP. |
| SendAsync(String, Int32, Byte[], Object) |
Tenta de forma assíncrona enviar uma mensagem de eco do Internet Control Message Protocol (ICMP) com o buffer de dados especificado para o computador especificado, e receber uma correspondente mensagem de resposta de eco ICMP desse computador. Esta sobrecarga permite-lhe especificar um valor de time-out para a operação. |
| SendAsync(IPAddress, Int32, Byte[], Object) |
Tenta de forma assíncrona enviar uma mensagem de eco do Internet Control Message Protocol (ICMP) com o buffer de dados especificado para o computador que possui o especificado IPAddress, e receber uma correspondente mensagem de resposta de eco ICMP desse computador. Esta sobrecarga permite-lhe especificar um valor de time-out para a operação. |
| SendAsync(IPAddress, Int32, Object) |
Tenta de forma assíncrona enviar uma mensagem de eco do Internet Control Message Protocol (ICMP) para o computador que tem o especificado IPAddress, e receber uma correspondente mensagem de resposta de eco ICMP desse computador. Esta sobrecarga permite-lhe especificar um valor de time-out para a operação. |
| SendAsync(String, Object) |
Tenta de forma assíncrona enviar uma mensagem de eco do Internet Control Message Protocol (ICMP) para o computador especificado e receber uma correspondente mensagem de resposta de eco ICMP desse computador. |
| SendAsync(IPAddress, Object) |
Tenta de forma assíncrona enviar uma mensagem de eco do Internet Control Message Protocol (ICMP) para o computador que tem o especificado IPAddress, e receber uma correspondente mensagem de resposta de eco ICMP desse computador. |
| SendAsync(String, Int32, Object) |
Tenta de forma assíncrona enviar uma mensagem de eco do Internet Control Message Protocol (ICMP) para o computador especificado e receber uma correspondente mensagem de resposta de eco ICMP desse computador. Esta sobrecarga permite-lhe especificar um valor de time-out para a operação. |
Observações
Estes métodos não fazem com que o fio principal da sua aplicação bloqueie. Se quiseres bloquear enquanto esperas pela mensagem de resposta eco ICMP, usa os Send métodos.
Note
O endereço IP devolvido por qualquer um dos SendAsync métodos pode originar-se de um computador remoto malicioso. Não se ligue ao computador remoto usando isto. Usa o DNS para determinar o endereço IP da máquina à qual queres ligar-te.
SendAsync(String, Int32, Byte[], PingOptions, Object)
Tenta de forma assíncrona enviar uma mensagem de eco do Internet Control Message Protocol (ICMP) com o buffer de dados especificado para o computador especificado, e receber uma correspondente mensagem de resposta de eco ICMP desse computador. Esta sobrecarga permite especificar um valor de time-out para a operação e a fragmentação de controlo e valores Time-to-Live para o pacote 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);
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)
Parâmetros
- hostNameOrAddress
- String
A String que identifica o computador que é o destino da mensagem de eco ICMP. O valor especificado para este parâmetro pode ser um nome de host ou uma representação em cadeia de um endereço IP.
- timeout
- Int32
Um Int32 valor que especifica o número máximo de milissegundos (após o envio da mensagem de eco) para esperar pela mensagem de resposta de eco ICMP.
- buffer
- Byte[]
Um Byte array que contém dados a serem enviados com a mensagem de eco ICMP e devolvidos na mensagem de resposta de eco ICMP. O array não pode conter mais de 65.500 bytes.
- options
- PingOptions
Um PingOptions objeto usado para controlar a fragmentação e os valores Time-to-Live para o pacote de mensagens de eco ICMP.
- userToken
- Object
Um objeto que é passado para o método invocado quando a operação assíncrona termina.
Exceções
timeout é inferior a zero.
Está em curso uma chamada para SendAsync .
Foi lançada uma exceção durante o envio ou receção das mensagens ICMP. Veja a exceção interna para a exceção exata que foi lançada.
hostNameOrAddress não foi possível resolver para um endereço IP válido.
Este objeto foi descartado.
O tamanho de buffer ultrapassa os 65500 bytes.
.NET versões 7 e posteriores apenas em Linux: O processo não tem privilégios e buffer não está vazio.
Exemplos
O seguinte exemplo de código demonstra como chamar este método.
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);
}
}
}
}
Observações
O SendAsync método envia a mensagem Echo de forma assíncrona e, quando a operação é concluída (com sucesso ou não), devolve o estado à sua aplicação. Chame o SendAsync método quando a sua candidatura não tiver de bloquear. Cada chamada é executada numa thread separada que é automaticamente alocada a partir do pool de threads. Quando a operação assíncrona termina, ela eleva o PingCompleted evento. As aplicações usam um PingCompletedEventHandler delegado para especificar o método que é chamado quando SendAsync surge o evento. Deve adicionar um PingCompletedEventHandler delegado ao evento antes de ligar SendAsync. O método do delegado recebe um PingCompletedEventArgs objeto que contém um PingReply objeto que descreve o resultado da SendAsync chamada. O PingCompletedEventArgs objeto herda a UserState propriedade. Esta propriedade contém o userToken objeto passado para a SendAsync chamada.
Se a sua aplicação bloquear enquanto espera uma resposta, use os Send métodos; estes métodos são síncronos.
Se a mensagem de resposta de eco ICMP não for recebida dentro do tempo especificado pelo timeout parâmetro, o eco ICMP falha, e a Status propriedade é definida para TimedOut.
Note
Ao especificar números muito pequenos para timeout, a resposta Ping pode ser recebida mesmo que timeout tenham passado milissegundos.
Se a DontFragment propriedade for true e o tamanho total do pacote exceder o tamanho máximo do pacote que pode ser transmitido por um dos nós de encaminhamento entre os computadores local e remoto, o pedido de eco ICMP falha. Quando isto acontece, o Status é definido para PacketTooBig.
Use esta Ttl propriedade para especificar o número máximo de vezes que a mensagem de eco ICMP pode ser encaminhada antes de chegar ao seu destino. Se o pacote não chegar ao seu destino após ser encaminhado o número de vezes especificado, o pacote é descartado e o pedido de eco ICMP falha. Quando isto acontece, o Status é definido para TtlExpired.
Aplica-se a
SendAsync(IPAddress, Int32, Byte[], PingOptions, Object)
Tenta de forma assíncrona enviar uma mensagem de eco do Internet Control Message Protocol (ICMP) com o buffer de dados especificado para o computador que possui o especificado IPAddress, e receber uma correspondente mensagem de resposta de eco ICMP desse computador. Esta sobrecarga permite especificar um valor de time-out para a operação e controlar os valores de fragmentação e Time-to-Live para o pacote de mensagens de eco 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);
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)
Parâmetros
- timeout
- Int32
Um Int32 valor que especifica o número máximo de milissegundos (após o envio da mensagem de eco) para esperar pela mensagem de resposta de eco ICMP.
- buffer
- Byte[]
Um Byte array que contém dados a serem enviados com a mensagem de eco ICMP e devolvidos na mensagem de resposta de eco ICMP. O array não pode conter mais de 65.500 bytes.
- options
- PingOptions
Um PingOptions objeto usado para controlar a fragmentação e os valores Time-to-Live para o pacote de mensagens de eco ICMP.
- userToken
- Object
Um objeto que é passado para o método invocado quando a operação assíncrona termina.
Exceções
address ou buffer é null.
timeout é inferior a zero.
Está em curso uma chamada para SendAsync .
Foi lançada uma exceção durante o envio ou receção das mensagens ICMP. Veja a exceção interna para a exceção exata que foi lançada.
address não é um endereço IP válido.
Este objeto foi descartado.
O tamanho de buffer ultrapassa os 65500 bytes.
.NET versões 7 e posteriores apenas em Linux: O processo não tem privilégios e buffer não está vazio.
Exemplos
O seguinte exemplo de código demonstra como chamar este método. Para uma implementação do método de callback, veja a SendAsync secção de exemplo de sobrecarga de métodos.
O seguinte exemplo de código requer os seguintes espaços de nomes:
using System;
using System.Net;
using System.Net.NetworkInformation;
using System.Text;
using System.Threading;
O seguinte exemplo de código envia uma mensagem de eco ICMP de forma assíncrona.
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.");
}
Observações
O SendAsync método envia a mensagem Echo de forma assíncrona e, quando a operação é concluída (com sucesso ou não), devolve o estado à sua aplicação. Chame o SendAsync método quando a sua candidatura não tiver de bloquear. Cada chamada é executada numa thread separada que é automaticamente alocada a partir do pool de threads. Quando a operação assíncrona termina, ela eleva o PingCompleted evento. As aplicações usam um PingCompletedEventHandler delegado para especificar o método que é chamado quando SendAsync surge o evento. Deve adicionar um PingCompletedEventHandler delegado ao evento antes de ligar SendAsync. O método do delegado recebe um PingCompletedEventArgs objeto que contém um PingReply objeto que descreve o resultado da SendAsync chamada. O PingCompletedEventArgs objeto herda a UserState propriedade. Esta propriedade contém o userToken objeto passado para a SendAsync chamada.
Se a sua aplicação bloquear enquanto espera uma resposta, use os Send métodos; estes métodos são síncronos.
Se a mensagem de resposta de eco ICMP não for recebida dentro do tempo especificado pelo timeout parâmetro, o eco ICMP falha, e a Status propriedade é definida para TimedOut.
Note
Ao especificar números muito pequenos para timeout, a resposta Ping pode ser recebida mesmo que timeout tenham passado milissegundos.
Se a DontFragment propriedade for true e o tamanho total do pacote exceder o tamanho máximo do pacote que pode ser transmitido por um dos nós de encaminhamento entre os computadores local e remoto, o pedido de eco ICMP falha. Quando isto acontece, o Status é definido para PacketTooBig.
Use esta Ttl propriedade para especificar o número máximo de vezes que a mensagem de eco ICMP pode ser encaminhada antes de chegar ao seu destino. Se o pacote não chegar ao seu destino após ser encaminhado o número de vezes especificado, o pacote é descartado e o pedido de eco ICMP falha. Quando isto acontece, o Status é definido para TtlExpired.
Aplica-se a
SendAsync(String, Int32, Byte[], Object)
Tenta de forma assíncrona enviar uma mensagem de eco do Internet Control Message Protocol (ICMP) com o buffer de dados especificado para o computador especificado, e receber uma correspondente mensagem de resposta de eco ICMP desse computador. Esta sobrecarga permite-lhe especificar um valor de time-out para a operação.
public:
void SendAsync(System::String ^ hostNameOrAddress, int timeout, cli::array <System::Byte> ^ buffer, System::Object ^ userToken);
public void SendAsync(string hostNameOrAddress, int timeout, byte[] buffer, object userToken);
member this.SendAsync : string * int * byte[] * obj -> unit
Public Sub SendAsync (hostNameOrAddress As String, timeout As Integer, buffer As Byte(), userToken As Object)
Parâmetros
- hostNameOrAddress
- String
A String que identifica o computador que é o destino da mensagem de eco ICMP. O valor especificado para este parâmetro pode ser um nome de host ou uma representação em cadeia de um endereço IP.
- timeout
- Int32
Um Int32 valor que especifica o número máximo de milissegundos (após o envio da mensagem de eco) para esperar pela mensagem de resposta de eco ICMP.
- buffer
- Byte[]
Um Byte array que contém dados a serem enviados com a mensagem de eco ICMP e devolvidos na mensagem de resposta de eco ICMP. O array não pode conter mais de 65.500 bytes.
- userToken
- Object
Um objeto que é passado para o método invocado quando a operação assíncrona termina.
Exceções
timeout é inferior a zero.
Está em curso uma chamada para SendAsync .
Foi lançada uma exceção durante o envio ou receção das mensagens ICMP. Veja a exceção interna para a exceção exata que foi lançada.
hostNameOrAddress não foi possível resolver para um endereço IP válido.
Este objeto foi descartado.
O tamanho de buffer ultrapassa os 65500 bytes.
.NET versões 7 e posteriores apenas em Linux: O processo não tem privilégios e buffer não está vazio.
Exemplos
O exemplo de código seguinte demonstra como chamar uma SendAsync sobrecarga, veja a visão geral da Ping classe.
Observações
O SendAsync método envia a mensagem Echo de forma assíncrona e, quando a operação é concluída (com sucesso ou não), devolve o estado à sua aplicação. Chame o SendAsync método quando a sua candidatura não deve bloquear. Cada chamada é executada numa thread separada que é automaticamente alocada a partir do pool de threads. Quando a operação assíncrona termina, ela eleva o PingCompleted evento. As aplicações usam um PingCompletedEventHandler delegado para especificar o método que é chamado quando SendAsync surge o evento. Deve adicionar um PingCompletedEventHandler delegado ao evento antes de ligar SendAsync. O método do delegado recebe um PingCompletedEventArgs objeto contendo um PingReply objeto que descreve o resultado da SendAsync chamada. O PingCompletedEventArgs objeto herda a UserState propriedade. Esta propriedade contém o userToken objeto passado para a SendAsync chamada.
Se a sua aplicação bloquear enquanto espera uma resposta, use os Send métodos; estes métodos são síncronos.
Se a mensagem de resposta de eco ICMP não for recebida dentro do tempo especificado pelo timeout parâmetro, o eco ICMP falha, e a Status propriedade é definida para TimedOut.
Note
Ao especificar números muito pequenos para timeout, a resposta Ping pode ser recebida mesmo que timeout tenham passado milissegundos.
Esta sobrecarga utiliza as definições padrão para fragmentação e encaminhamento de pacotes. O pacote que contém a mensagem de eco ICMP pode ser fragmentado em trânsito se o tamanho total do pacote exceder o tamanho máximo que pode ser transmitido por um dos nós de encaminhamento entre os computadores locais e remotos. Para evitar fragmentação, use um dos SendAsync métodos que toma um options parâmetro e defina a DontFragment propriedade para true. Quando DontFragment é true e o tamanho total do pacote excede o tamanho máximo que pode ser transmitido por um dos nós de encaminhamento entre os computadores locais e remotos, o pedido de eco ICMP falha. Quando isto acontece, o Status é definido para PacketTooBig. Os pacotes ou fragmentos de pacotes (se fragmentados) podem ser encaminhados ao encaminhar os nós 128 vezes antes de serem descartados. Para alterar esta definição, use uma SendAsync sobrecarga que tome um options parâmetro e defina a Ttl propriedade para o valor desejado. Se o pacote não chegar ao seu destino após ser encaminhado o número de vezes especificado, o pacote é descartado e o pedido de eco ICMP falha. Quando isto acontece, o Status é definido para TtlExpired.
Aplica-se a
SendAsync(IPAddress, Int32, Byte[], Object)
Tenta de forma assíncrona enviar uma mensagem de eco do Internet Control Message Protocol (ICMP) com o buffer de dados especificado para o computador que possui o especificado IPAddress, e receber uma correspondente mensagem de resposta de eco ICMP desse computador. Esta sobrecarga permite-lhe especificar um valor de time-out para a operação.
public:
void SendAsync(System::Net::IPAddress ^ address, int timeout, cli::array <System::Byte> ^ buffer, System::Object ^ userToken);
public void SendAsync(System.Net.IPAddress address, int timeout, byte[] buffer, object userToken);
member this.SendAsync : System.Net.IPAddress * int * byte[] * obj -> unit
Public Sub SendAsync (address As IPAddress, timeout As Integer, buffer As Byte(), userToken As Object)
Parâmetros
- timeout
- Int32
Um Int32 valor que especifica o número máximo de milissegundos (após o envio da mensagem de eco) para esperar pela mensagem de resposta de eco ICMP.
- buffer
- Byte[]
Um Byte array que contém dados a serem enviados com a mensagem de eco ICMP e devolvidos na mensagem de resposta de eco ICMP. O array não pode conter mais de 65.500 bytes.
- userToken
- Object
Um objeto que é passado para o método invocado quando a operação assíncrona termina.
Exceções
address ou buffer é null.
timeout é inferior a zero.
Está em curso uma chamada para SendAsync .
Foi lançada uma exceção durante o envio ou receção das mensagens ICMP. Veja a exceção interna para a exceção exata que foi lançada.
address não é um endereço IP válido.
Este objeto foi descartado.
O tamanho de buffer ultrapassa os 65500 bytes.
.NET versões 7 e posteriores apenas em Linux: O processo não tem privilégios e buffer não está vazio.
Exemplos
Para um exemplo de código que demonstra chamar uma SendAsync sobrecarga, veja a Ping visão geral da classe.
Observações
Este método envia a mensagem de eco de forma assíncrona e, quando a operação termina (com sucesso ou não), devolve o estado à sua aplicação. Chame o SendAsync método quando a sua candidatura não deve bloquear. Cada chamada é executada numa thread separada que é automaticamente alocada a partir do pool de threads. Quando a operação assíncrona termina, ela eleva o PingCompleted evento. Para especificar o método que é chamado quando SendAsync levanta o evento, deve adicionar um PingCompletedEventHandler delegado ao evento antes de chamar SendAsync. O método do delegado recebe um PingCompletedEventArgs objeto que contém um PingReply objeto que descreve o resultado da SendAsync chamada. O PingCompletedEventArgs objeto herda a UserState propriedade. Esta propriedade contém o userToken objeto passado para a SendAsync chamada.
Note
Se a sua aplicação bloquear enquanto espera uma resposta, use os Send métodos; estes métodos são síncronos.
Se a mensagem de resposta de eco ICMP não for recebida dentro do tempo especificado pelo timeout parâmetro, o eco ICMP falha, e a Status propriedade é definida para TimedOut.
Note
Ao especificar números muito pequenos para timeout, a resposta Ping pode ser recebida mesmo que timeout tenham passado milissegundos.
Esta sobrecarga utiliza as definições padrão para fragmentação e encaminhamento de pacotes. O pacote que contém a mensagem de eco ICMP pode ser fragmentado em trânsito se o tamanho total do pacote exceder o tamanho máximo que pode ser transmitido por um dos nós de encaminhamento entre os computadores locais e remotos. Para evitar fragmentação, use um dos SendAsync métodos que toma um options parâmetro e defina a DontFragment propriedade para true. Quando DontFragment é true e o tamanho total do pacote excede o tamanho máximo que pode ser transmitido por um dos nós de encaminhamento entre os computadores locais e remotos, o pedido de eco ICMP falha. Quando isto acontece, o Status é definido para PacketTooBig. Os pacotes ou fragmentos de pacotes (se fragmentados) podem ser encaminhados ao encaminhar os nós 128 vezes antes de serem descartados. Para alterar esta definição, use uma SendAsync sobrecarga que tome um options parâmetro e defina a Ttl propriedade para o valor desejado. Se o pacote não chegar ao seu destino após ser encaminhado o número de vezes especificado, o pacote é descartado e o pedido de eco ICMP falha. Quando isto acontece, o Status é definido para TtlExpired.
Aplica-se a
SendAsync(IPAddress, Int32, Object)
Tenta de forma assíncrona enviar uma mensagem de eco do Internet Control Message Protocol (ICMP) para o computador que tem o especificado IPAddress, e receber uma correspondente mensagem de resposta de eco ICMP desse computador. Esta sobrecarga permite-lhe especificar um valor de time-out para a operação.
public:
void SendAsync(System::Net::IPAddress ^ address, int timeout, System::Object ^ userToken);
public void SendAsync(System.Net.IPAddress address, int timeout, object userToken);
member this.SendAsync : System.Net.IPAddress * int * obj -> unit
Public Sub SendAsync (address As IPAddress, timeout As Integer, userToken As Object)
Parâmetros
- timeout
- Int32
Um Int32 valor que especifica o número máximo de milissegundos (após o envio da mensagem de eco) para esperar pela mensagem de resposta de eco ICMP.
- userToken
- Object
Um objeto que é passado para o método invocado quando a operação assíncrona termina.
Exceções
address é null.
timeout é inferior a zero.
Está em curso um apelo ao SendAsync(IPAddress, Int32, Byte[], Object) método.
Foi lançada uma exceção durante o envio ou receção das mensagens ICMP. Veja a exceção interna para a exceção exata que foi lançada.
address não é um endereço IP válido.
Este objeto foi descartado.
Exemplos
Para um exemplo de código que demonstra chamar uma SendAsync sobrecarga, veja a Ping visão geral da classe.
Observações
O SendAsync método envia a mensagem Echo de forma assíncrona e, quando a operação é concluída (com sucesso ou não), devolve o estado à sua aplicação. Chame o SendAsync método quando a sua candidatura não deve bloquear. Cada chamada é executada numa thread separada que é automaticamente alocada a partir do pool de threads. Quando a operação assíncrona termina, ela eleva o PingCompleted evento. As aplicações usam um PingCompletedEventHandler delegado para especificar o método que é chamado quando SendAsync surge o evento. Deve adicionar um PingCompletedEventHandler delegado ao evento antes de ligar SendAsync. O método do delegado recebe um PingCompletedEventArgs objeto que contém um PingReply objeto que descreve o resultado da SendAsync chamada. O PingCompletedEventArgs objeto herda a UserState propriedade. Esta propriedade contém o userToken objeto passado para a SendAsync chamada.
Se a sua aplicação bloquear enquanto espera uma resposta, use os Send métodos; estes métodos são síncronos.
Se a mensagem de resposta de eco ICMP não for recebida dentro do tempo especificado pelo timeout parâmetro, o eco ICMP falha, e a Status propriedade é definida para TimedOut.
Note
Ao especificar números muito pequenos para timeout, a resposta Ping pode ser recebida mesmo que timeout tenham passado milissegundos.
Esta sobrecarga utiliza as definições padrão para fragmentação e encaminhamento de pacotes. O pacote que contém a mensagem de eco ICMP pode ser fragmentado em trânsito se o tamanho total do pacote exceder o tamanho máximo que pode ser transmitido por um dos nós de encaminhamento entre os computadores locais e remotos. Para evitar fragmentação, use um dos SendAsync métodos que toma um options parâmetro e defina a DontFragment propriedade para true. Quando DontFragment é true e o tamanho total do pacote excede o tamanho máximo que pode ser transmitido por um dos nós de encaminhamento entre os computadores locais e remotos, o pedido de eco ICMP falha. Quando isto acontece, o Status é definido para PacketTooBig. Os pacotes ou fragmentos de pacotes (se fragmentados) podem ser encaminhados ao encaminhar os nós 128 vezes antes de serem descartados. Para alterar esta definição, use uma SendAsync sobrecarga que tome um options parâmetro e defina a Ttl propriedade para o valor desejado. Se o pacote não chegar ao seu destino após ser encaminhado o número de vezes especificado, o pacote é descartado e o pedido de eco ICMP falha. Quando isto acontece, o Status é definido para TtlExpired.
Aplica-se a
SendAsync(String, Object)
Tenta de forma assíncrona enviar uma mensagem de eco do Internet Control Message Protocol (ICMP) para o computador especificado e receber uma correspondente mensagem de resposta de eco ICMP desse computador.
public:
void SendAsync(System::String ^ hostNameOrAddress, System::Object ^ userToken);
public void SendAsync(string hostNameOrAddress, object userToken);
member this.SendAsync : string * obj -> unit
Public Sub SendAsync (hostNameOrAddress As String, userToken As Object)
Parâmetros
- hostNameOrAddress
- String
A String que identifica o computador que é o destino da mensagem de eco ICMP. O valor especificado para este parâmetro pode ser um nome de host ou uma representação em cadeia de um endereço IP.
- userToken
- Object
Um objeto que é passado para o método invocado quando a operação assíncrona termina.
Exceções
hostNameOrAddress é null ou é uma cadeia vazia ("").
Está em curso um apelo ao SendAsync(String, Object) método.
Foi lançada uma exceção durante o envio ou receção das mensagens ICMP. Veja a exceção interna para a exceção exata que foi lançada.
hostNameOrAddress não foi possível resolver para um endereço IP válido.
Este objeto foi descartado.
Exemplos
Para um exemplo de código que demonstre como chamar o SendAsync método, consulte a visão geral da Ping classe.
Observações
O SendAsync método envia a mensagem de eco de forma assíncrona e, quando a operação é concluída (com ou sem sucesso), devolve o estado à sua aplicação. Chame o SendAsync método quando a sua candidatura não deve bloquear. Cada chamada a este método é executada numa thread separada que é automaticamente alocada a partir do pool de threads. Quando a operação assíncrona termina, ela eleva o PingCompleted evento. Para especificar o método que é chamado quando SendAsync levanta o evento, deve adicionar um PingCompletedEventHandler delegado ao evento antes de chamar SendAsync. O método do delegado recebe um PingCompletedEventArgs objeto que contém um PingReply objeto que descreve o resultado da SendAsync chamada. O PingCompletedEventArgs objeto herda a UserState propriedade. Esta propriedade contém o userToken objeto passado para a SendAsync chamada.
Note
Se a sua aplicação bloquear enquanto espera uma resposta, use os Send métodos; estes métodos são síncronos.
Este método envia um buffer de 32 Byte dados com a mensagem de eco ICMP. O método espera cinco segundos por uma mensagem de resposta de eco ICMP. Se não receber resposta nesse tempo, o método retorna e a Status propriedade é definida para TimedOut.
Esta sobrecarga utiliza as definições padrão para fragmentação e encaminhamento de pacotes. O pacote que contém a mensagem de eco ICMP pode ser fragmentado em trânsito se o tamanho total do pacote exceder o tamanho máximo que pode ser transmitido por um dos nós de encaminhamento entre os computadores locais e remotos. Para evitar fragmentação, use um dos SendAsync métodos que toma um options parâmetro e defina a DontFragment propriedade para true. Quando DontFragment é true e o tamanho total do pacote excede o tamanho máximo que pode ser transmitido por um dos nós de encaminhamento entre os computadores locais e remotos, o pedido de eco ICMP falha. Quando isto acontece, o Status é definido para PacketTooBig.
Os pacotes ou fragmentos de pacotes podem ser encaminhados encaminhando nós 128 vezes antes de serem descartados. Para alterar esta definição, use uma SendAsync sobrecarga que tome um options parâmetro e defina a Ttl propriedade para o valor desejado. Se o pacote não chegar ao seu destino após ser encaminhado o número de vezes especificado, o pacote é descartado e o pedido de eco ICMP falha. Quando isto acontece, o Status é definido para TtlExpired.
Aplica-se a
SendAsync(IPAddress, Object)
Tenta de forma assíncrona enviar uma mensagem de eco do Internet Control Message Protocol (ICMP) para o computador que tem o especificado IPAddress, e receber uma correspondente mensagem de resposta de eco ICMP desse computador.
public:
void SendAsync(System::Net::IPAddress ^ address, System::Object ^ userToken);
public void SendAsync(System.Net.IPAddress address, object userToken);
member this.SendAsync : System.Net.IPAddress * obj -> unit
Public Sub SendAsync (address As IPAddress, userToken As Object)
Parâmetros
- userToken
- Object
Um objeto que é passado para o método invocado quando a operação assíncrona termina.
Exceções
address é null.
Está em curso uma chamada para o SendAsync método.
Foi lançada uma exceção durante o envio ou receção das mensagens ICMP. Veja a exceção interna para a exceção exata que foi lançada.
address não é um endereço IP válido.
Este objeto foi descartado.
Exemplos
Para um exemplo de código que demonstra chamar um SendAsync método, veja a visão geral da Ping classe.
Observações
O SendAsync método envia a mensagem de eco de forma assíncrona e, quando a operação é concluída (com ou sem sucesso), devolve o estado à sua aplicação. Chame o SendAsync método quando a sua candidatura não deve bloquear. Cada chamada a este método é executada numa thread separada que é automaticamente alocada a partir do pool de threads. Quando a operação assíncrona termina, ela eleva o PingCompleted evento. Para especificar o método que é chamado quando SendAsync levanta o evento, deve adicionar um PingCompletedEventHandler delegado ao evento antes de chamar SendAsync. O método do delegado recebe um PingCompletedEventArgs objeto que contém um PingReply objeto que descreve o resultado da SendAsync chamada. O PingCompletedEventArgs objeto herda a UserState propriedade. Esta propriedade contém o userToken objeto passado para a SendAsync chamada.
Note
Se a sua aplicação bloquear enquanto espera uma resposta, use um dos Send métodos; estes métodos são síncronos.
Este método envia um buffer de 32 Byte dados com a mensagem de eco ICMP. O método espera cinco segundos por uma mensagem de resposta de eco ICMP. Se não receber resposta nesse tempo, o método devolve e a Status propriedade é definida para TimedOut.
Esta sobrecarga utiliza as definições padrão para fragmentação e encaminhamento de pacotes. O pacote que contém a mensagem de eco ICMP pode ser fragmentado em trânsito se o tamanho total do pacote exceder o tamanho máximo que pode ser transmitido por um dos nós de encaminhamento entre os computadores locais e remotos. Para evitar fragmentação, use um dos SendAsync métodos que toma um options parâmetro e defina a DontFragment propriedade para true. Quando DontFragment é true e o tamanho total do pacote excede o tamanho máximo que pode ser transmitido por um dos nós de encaminhamento entre os computadores locais e remotos, o pedido de eco ICMP falha. Quando isto acontece, o Status é definido para PacketTooBig.
Os pacotes ou fragmentos de pacotes podem ser encaminhados encaminhando nós 128 vezes antes de serem descartados. Para alterar esta definição, use uma SendAsync sobrecarga que tome um options parâmetro e defina a Ttl propriedade para o valor desejado. Se o pacote não chegar ao seu destino após ser encaminhado o número de vezes especificado, o pacote é descartado e o pedido de eco ICMP falha. Quando isto acontece, o Status é definido para TtlExpired.
Aplica-se a
SendAsync(String, Int32, Object)
Tenta de forma assíncrona enviar uma mensagem de eco do Internet Control Message Protocol (ICMP) para o computador especificado e receber uma correspondente mensagem de resposta de eco ICMP desse computador. Esta sobrecarga permite-lhe especificar um valor de time-out para a operação.
public:
void SendAsync(System::String ^ hostNameOrAddress, int timeout, System::Object ^ userToken);
public void SendAsync(string hostNameOrAddress, int timeout, object userToken);
member this.SendAsync : string * int * obj -> unit
Public Sub SendAsync (hostNameOrAddress As String, timeout As Integer, userToken As Object)
Parâmetros
- hostNameOrAddress
- String
A String que identifica o computador que é o destino da mensagem de eco ICMP. O valor especificado para este parâmetro pode ser um nome de host ou uma representação em cadeia de um endereço IP.
- timeout
- Int32
Um Int32 valor que especifica o número máximo de milissegundos (após o envio da mensagem de eco) para esperar pela mensagem de resposta de eco ICMP.
- userToken
- Object
Um objeto que é passado para o método invocado quando a operação assíncrona termina.
Exceções
hostNameOrAddress é null ou é uma cadeia vazia ("").
timeout é inferior a zero.
Está em curso uma chamada para SendAsync .
Foi lançada uma exceção durante o envio ou receção das mensagens ICMP. Veja a exceção interna para a exceção exata que foi lançada.
hostNameOrAddress não foi possível resolver para um endereço IP válido.
Este objeto foi descartado.
Exemplos
Para um exemplo de código que demonstre como chamar o SendAsync método, consulte a visão geral da Ping classe.
Observações
O SendAsync método envia a mensagem Echo de forma assíncrona e, quando a operação é concluída (com sucesso ou não), devolve o estado à sua aplicação. Chame o SendAsync método quando a sua candidatura não deve bloquear. Cada chamada é executada numa thread separada que é automaticamente alocada a partir do pool de threads. Quando a operação assíncrona termina, ela eleva o PingCompleted evento. As aplicações usam um PingCompletedEventHandler delegado para especificar o método que é chamado quando SendAsync surge o evento. Deve adicionar um PingCompletedEventHandler delegado ao evento antes de ligar SendAsync. O método do delegado recebe um PingCompletedEventArgs objeto que contém um PingReply objeto que descreve o resultado da SendAsync chamada. O PingCompletedEventArgs objeto herda a UserState propriedade. Esta propriedade contém o userToken objeto passado para a SendAsync chamada.
Se a sua aplicação bloquear enquanto espera uma resposta, use os Send métodos; estes métodos são síncronos.
Se a mensagem de resposta de eco ICMP não for recebida dentro do tempo especificado pelo timeout parâmetro, o eco ICMP falha, e a Status propriedade é definida para TimedOut.
Note
Ao especificar números muito pequenos para timeout, a resposta Ping pode ser recebida mesmo que timeout tenham passado milissegundos.
Esta sobrecarga utiliza as definições padrão para fragmentação e encaminhamento de pacotes. O pacote que contém a mensagem de eco ICMP pode ser fragmentado em trânsito se o tamanho total do pacote exceder o tamanho máximo que pode ser transmitido por um dos nós de encaminhamento entre os computadores locais e remotos. Para evitar fragmentação, use um dos SendAsync métodos que toma um options parâmetro e defina a DontFragment propriedade para true. Quando DontFragment é true e o tamanho total do pacote excede o tamanho máximo que pode ser transmitido por um dos nós de encaminhamento entre os computadores locais e remotos, o pedido de eco ICMP falha. Quando isto acontece, o Status é definido para PacketTooBig. Os pacotes ou fragmentos de pacotes (se fragmentados) podem ser encaminhados ao encaminhar os nós 128 vezes antes de serem descartados. Para alterar esta definição, use uma SendAsync sobrecarga que tome um options parâmetro e defina a Ttl propriedade para o valor desejado. Se o pacote não chegar ao seu destino após ser encaminhado o número de vezes especificado, o pacote é descartado e o pedido de eco ICMP falha. Quando isto acontece, o Status é definido para TtlExpired.