Socket.ReceiveMessageFrom 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.
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
- 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
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.
O Socket foi fechado.
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.