Socket.ReceiveMessageFromAsync(SocketAsyncEventArgs) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Começa a receber de forma assíncrona o número especificado de bytes de dados no local especificado no buffer de dados, usando o especificado SocketFlagse armazena as informações de ponto de extremidade e 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 ser usado para esta operação de soquete assíncrona.
Retornos
true se a operação de E/S estiver pendente. O Completed evento no e parâmetro será gerado após a conclusão da operação.
false se a operação de E/S for concluída de forma síncrona. Nesse caso, Completed o e evento no parâmetro não será gerado e o e objeto passado como um parâmetro poderá ser examinado imediatamente após a chamada do método retornar para recuperar o resultado da operação.
Exceções
Não RemoteEndPoint pode ser nulo.
O Socket foi fechado.
Erro ao tentar acessar o soquete.
Comentários
O ReceiveMessageFromAsync método é usado principalmente para receber dados de mensagem em um soquete sem conexão. O endereço local do soquete deve ser conhecido. Esse método só pode ser usado com datagram e soquetes brutos. O soquete deve ser inicializado com o tipo de soquete definido como Dgram ou Raw antes de chamar esse método. Isso pode ser feito quando o soquete é construído usando Socket.
O chamador deve definir a SocketAsyncEventArgs.RemoteEndPoint propriedade como um EndPoint do mesmo tipo que o ponto de extremidade do host remoto. A propriedade será atualizada no recebimento bem-sucedido para o ponto de extremidade remoto real.
As seguintes propriedades e eventos no System.Net.Sockets.SocketAsyncEventArgs objeto são necessários para chamar esse método com êxito:
O chamador pode definir a SocketAsyncEventArgs.UserToken propriedade para qualquer objeto de estado de usuário desejado antes de chamar o ReceiveMessageFromAsync método, para que as informações sejam recuperáveis no método de retorno de chamada. Se o retorno de chamada precisar de mais informações do que um único objeto, uma classe pequena poderá ser criada para manter as outras informações de estado necessárias como membros.
Para soquetes orientados à mensagem, uma mensagem de entrada é colocada no buffer até o tamanho total do buffer. As SocketAsyncEventArgs.Count propriedades e SocketAsyncEventArgs.Offset as propriedades determinam onde no buffer os dados são colocados e a quantidade de dados.
O ReceiveMessageFromAsync método define automaticamente a opção de PacketInformation soquete como true a primeira vez que é chamado para um determinado Socket. No entanto, o IPPacketInformation objeto só será válido para pacotes que chegam ao computador local após a opção de soquete ter sido definida. Se um soquete for enviado pacotes entre quando o soquete estiver associado a um ponto de extremidade local (explicitamente pelo Bind método ou implicitamente por um dos Connectmétodos , ConnectAsyncou SendTo, e SendToAsync a primeira chamada para o ReceiveMessageFromAsync método, as chamadas ao ReceiveMessageFromAsync método resultarão em objetos inválidos IPPacketInformation para esses pacotes.
Para garantir que todos os IPPacketInformation objetos sejam válidos, um aplicativo deve definir a opção de PacketInformation soquete paratrue antes de ser associado a um ponto de extremidade local usando o SetSocketOption(SocketOptionLevel, SocketOptionName, Boolean) método.
Um aplicativo pode examinar os objetos resultantes IPPacketInformation se precisar saber se o datagram foi enviado usando um endereço unicast, multicast ou de transmissão.