Socket.ReceiveMessageFrom Método

Definição

Recebe o número especificado de bytes de dados no local especificado do buffer de dados, usando o especificado SocketFlags, e armazena as informações de ponto de extremidade e pacote.

public:
 int ReceiveMessageFrom(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags % socketFlags, System::Net::EndPoint ^ % remoteEP, [Runtime::InteropServices::Out] System::Net::Sockets::IPPacketInformation % ipPacketInformation);
public int ReceiveMessageFrom(byte[] buffer, int offset, int size, ref System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP, out System.Net.Sockets.IPPacketInformation ipPacketInformation);
member this.ReceiveMessageFrom : byte[] * int * int * SocketFlags * EndPoint * IPPacketInformation -> int
Public Function ReceiveMessageFrom (buffer As Byte(), offset As Integer, size As Integer, ByRef socketFlags As SocketFlags, ByRef remoteEP As EndPoint, ByRef ipPacketInformation As IPPacketInformation) As Integer

Parâmetros

buffer
Byte[]

Uma matriz de tipo Byte que é o local de armazenamento para dados recebidos.

offset
Int32

A posição no buffer parâmetro para armazenar os dados recebidos.

size
Int32

O número de bytes a serem recebidos.

socketFlags
SocketFlags

Uma combinação bit a bit dos SocketFlags valores.

remoteEP
EndPoint

Uma referência a um EndPoint tipo do mesmo tipo que o ponto de extremidade do host remoto a ser atualizado no recebimento bem-sucedido.

ipPacketInformation
IPPacketInformation

Um IPPacketInformation endereço de retenção e informações de interface.

Retornos

O número de bytes recebidos.

Exceções

buffer é null.

-ou-

remoteEP é null.

offset é menor que 0.

-ou-

offset é maior que o comprimento de buffer.

-ou-

size é menor que 0.

-ou-

size é maior que o comprimento do buffer menos o valor do parâmetro de deslocamento.

socketFlags não é uma combinação válida de valores.

-ou-

A LocalEndPoint propriedade não foi definida.

-ou-

.NET Framework está em execução em um processador AMD de 64 bits.

-ou-

Erro ao tentar acessar o soquete.

Comentários

O ReceiveMessageFrom método lê dados no buffer parâmetro, retorna o número de bytes lidos com êxito e captura o ponto de extremidade do host remoto do qual os dados foram enviados, bem como informações sobre o pacote recebido.

O ReceiveMessageFrom 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.

Para soquetes orientados a mensagens, uma mensagem de entrada é colocada no buffer parâmetro até o tamanho total especificado no size parâmetro. O offset parâmetro determina onde os buffer dados são colocados. A quantidade real de dados colocados no buffer é retornada pelo ReceiveMessageFrom método.

O ReceiveMessageFrom método de método define automaticamente a opção de PacketInformation soquete como true a primeira vez que é chamado para um determinado Socket. No entanto, o objeto retornado IPPacketInformation 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 ele estiver associado a um ponto de extremidade local (explicitamente pelo Bind método ou implicitamente por um dos Connectmétodos , ConnectAsyncou SendTo, e SendToAsync sua primeira chamada para o método, as ReceiveMessageFrom chamadas ao ReceiveMessageFrom método retornarão 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 para true antes de ser associado a um ponto de extremidade local usando o SetSocketOption(SocketOptionLevel, SocketOptionName, Boolean) método.

Um aplicativo pode examinar o ipPacketInformation parâmetro se precisar saber se o datagram foi enviado usando um endereço unicast, multicast ou de transmissão.

Note

O AddressFamily do EndPoint usado precisa ReceiveFrom corresponder ao AddressFamily usado EndPoint em SendTo.

Note

Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Network Tracing in .NET Framework.

Aplica-se a

Confira também