Socket.ReceiveMessageFromAsync(SocketAsyncEventArgs) 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.
Começa a receber assíncronamente o número especificado de bytes de dados para a localização especificada no buffer de dados, usando o especificado SocketFlags, e armazena a informação do endpoint e do pacote.
public:
bool ReceiveMessageFromAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool ReceiveMessageFromAsync(System.Net.Sockets.SocketAsyncEventArgs e);
member this.ReceiveMessageFromAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function ReceiveMessageFromAsync (e As SocketAsyncEventArgs) As Boolean
Parâmetros
O SocketAsyncEventArgs objeto a usar para esta operação de soquete assíncrono.
Devoluções
true se a operação de E/S estiver pendente. O Completed evento no e parâmetro será ativado após a conclusão da operação.
false se a operação de E/S fosse concluída de forma síncrona. Neste caso, o Completed evento sobre o e parâmetro não será levantado e o e objeto passado como parâmetro pode ser examinado imediatamente após o retorno da chamada ao método para recuperar o resultado da operação.
Exceções
Não RemoteEndPoint podem ser nulas.
O Socket local foi encerrado.
Ocorreu um erro ao tentar aceder ao soquete.
Observações
O ReceiveMessageFromAsync método é usado principalmente para receber dados de mensagens num socket sem conexão. O endereço local do socket deve ser conhecido. Este método só pode ser usado com datagramas e sockets brutos. O socket deve ser inicializado com o tipo de socket definido como Dgram ou Raw antes de chamar este método. Isto pode ser feito quando o soquete é construído usando Socket.
O chamador deve definir a SocketAsyncEventArgs.RemoteEndPoint propriedade para a EndPoint do mesmo tipo que o endpoint do host remoto. A propriedade será atualizada após a receção bem-sucedida para o endpoint remoto real.
As seguintes propriedades e eventos no System.Net.Sockets.SocketAsyncEventArgs objeto são necessárias para chamar com sucesso este método:
O chamador pode definir a SocketAsyncEventArgs.UserToken propriedade para qualquer objeto de estado do utilizador desejado antes de chamar o ReceiveMessageFromAsync método, de modo a que a informação seja recuperável no método de retorno. Se o callback precisar de mais informação do que um único objeto, pode ser criada uma pequena classe para conter as outras informações de estado necessárias como membros.
Para sockets orientados a mensagens, uma mensagem recebida é colocada no buffer até ao tamanho total do buffer. As SocketAsyncEventArgs.Count propriedades e SocketAsyncEventArgs.Offset determinam onde no buffer os dados são colocados e a quantidade de dados.
O ReceiveMessageFromAsync método define automaticamente a PacketInformation opção de soquete para true a primeira vez em que é chamada para um dado Socket. No entanto, o IPPacketInformation objeto só será válido para pacotes que chegam ao computador local depois de a opção socket ter sido definida. Se um socket for enviado pacotes entre o momento em que o socket está ligado a um ponto terminal local (explicitamente pelo Bind método ou implicitamente por um dos Connectmétodos , , SendTo, ou SendToAsync por um dos métodos) ConnectAsynce a primeira chamada ao ReceiveMessageFromAsync método, as chamadas ao ReceiveMessageFromAsync método resultarão em objetos inválidos IPPacketInformation para esses pacotes.
Para garantir que todos IPPacketInformation os objetos são válidos, uma aplicação deve definir a PacketInformation opção socket paratrue antes de ser associada a um endpoint local usando o SetSocketOption(SocketOptionLevel, SocketOptionName, Boolean) método.
Uma aplicação pode examinar os objetos resultantes IPPacketInformation se precisar de saber se o datagrama foi enviado usando um endereço unicast, multicast ou broadcast.