Socket.ReceiveMessageFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, IPPacketInformation) Método

Definição

Recebe o número de bytes de dados no local especificado no buffer de dados usando o SocketFlags especificado e armazena as informações de ponto de extremidade e pacote.Receives the specified number of bytes of data into the specified location of the data buffer, using the specified SocketFlags, and stores the endpoint and packet information.

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 do tipo Byte que é o local de armazenamento dos dados recebidos.An array of type Byte that is the storage location for received data.

offset
Int32

A posição no parâmetro buffer para armazenar os dados recebidos.The position in the buffer parameter to store the received data.

size
Int32

O número de bytes a serem recebidos.The number of bytes to receive.

socketFlags
SocketFlags

Uma combinação bit a bit dos valores SocketFlags.A bitwise combination of the SocketFlags values.

remoteEP
EndPoint

Um EndPoint, passado por referência, que representa o servidor remoto.An EndPoint, passed by reference, that represents the remote server.

ipPacketInformation
IPPacketInformation

Um IPPacketInformation que contém informações de endereço e de interface.An IPPacketInformation holding address and interface information.

Retornos

Int32

O número de bytes recebidos.The number of bytes received.

Exceções

buffer é null.buffer is null.

- ou --or- remoteEP é null.remoteEP is null.

offset é menor que 0.offset is less than 0.

- ou --or- offset é maior que o comprimento do buffer.offset is greater than the length of buffer.

- ou --or- size é menor que 0.size is less than 0.

- ou --or- size é maior que o comprimento de buffer menos o valor do parâmetro de deslocamento.size is greater than the length of the buffer minus the value of the offset parameter.

socketFlags não é uma combinação válida de valores.socketFlags is not a valid combination of values.

- ou --or- A propriedade LocalEndPoint não foi definida.The LocalEndPoint property was not set.

- ou --or- O .NET Framework está em execução em um processador AMD 64 bits.The .NET Framework is running on an AMD 64-bit processor.

- ou --or- Ocorreu um erro ao tentar acessar o soquete.An error occurred when attempting to access the socket.

O Socket foi fechado.The Socket has been closed.

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.The ReceiveMessageFrom method reads data into the buffer parameter, returns the number of bytes successfully read, and captures the remote host endpoint from which the data was sent, as well as information about the received packet.

O ReceiveMessageFrom método é usado principalmente para receber dados de mensagem em um soquete sem conexão.The ReceiveMessageFrom method is used primarily to receive message data on a connectionless socket. O endereço local do soquete deve ser conhecido.The socket's local address must be known. Esse método só pode ser usado com datagrama e soquetes brutos.This method can only be used with datagram and raw sockets. O soquete deve ser inicializado com o tipo de soquete definido como Dgram ou Raw antes de chamar esse método.The socket must be initialized with the socket type set to Dgram or Raw before calling this method. Isso pode ser feito quando o soquete é construído usando Socket .This can be done when the socket is constructed using Socket.

Para soquetes orientados a mensagens, uma mensagem de entrada é colocada no buffer parâmetro até o tamanho total especificado no size parâmetro.For message-oriented sockets, an incoming message is placed into the buffer parameter up to the total size specified in the size parameter. O offset parâmetro determina onde os buffer dados são colocados.The offset parameter determines where in the buffer the data is placed. A quantidade real de dados colocados no buffer é retornada pelo ReceiveMessageFrom método.The actual amount of data placed into the buffer is returned by the ReceiveMessageFrom method.

O método método ReceiveMessageFrom automaticamente define a PacketInformation opção de soquete como true a primeira vez que ela é chamada para um determinado Socket .The ReceiveMessageFrom method automatically method sets the PacketInformation socket option to true the first time it is called for a given Socket. No entanto, o IPPacketInformation objeto retornado só será válido para pacotes que chegam ao computador local após a opção de soquete ter sido definida.However, the returned IPPacketInformation object will only be valid for packets which arrive at the local computer after the socket option has been set. Se um soquete enviar pacotes entre quando estiver associado a um ponto de extremidade local (explicitamente pelo Bind método ou implicitamente por um dos Connect ConnectAsync métodos,, SendTo ou SendToAsync ) e sua primeira chamada para o ReceiveMessageFrom método, as chamadas para o ReceiveMessageFrom método retornarão objetos inválidos IPPacketInformation para esses pacotes.If a socket is sent packets between when it is bound to a local endpoint (explicitly by the Bind method or implicitly by one of the Connect, ConnectAsync, SendTo, or SendToAsync methods) and its first call to the ReceiveMessageFrom method, calls to ReceiveMessageFrom method will return invalid IPPacketInformation objects for these packets.

Para garantir que todos os IPPacketInformation objetos sejam válidos, um aplicativo deve definir a PacketInformation opção socket para true antes de ser associado a um ponto de extremidade local usando o SetSocketOption(SocketOptionLevel, SocketOptionName, Boolean) método.To ensure that all IPPacketInformation objects are valid, an application should set the PacketInformation socket option to true before it is bound to a local endpoint using the SetSocketOption(SocketOptionLevel, SocketOptionName, Boolean) method.

Um aplicativo pode examinar o ipPacketInformation parâmetro se ele precisar saber se o datagrama foi enviado usando um endereço unicast, multicast ou de difusão.An application can examine the ipPacketInformation parameter if it needs to know if the datagram was sent using a unicast, multicast, or broadcast address.

Observação

O AddressFamily do EndPoint usado no ReceiveFrom precisa corresponder ao AddressFamily do EndPoint usado em SendTo .The AddressFamily of the EndPoint used in ReceiveFrom needs to match the AddressFamily of the EndPoint used in SendTo.

Observação

Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo.This member outputs trace information when you enable network tracing in your application. Para obter mais informações, consulte rastreamento de rede na .NET Framework.For more information, see Network Tracing in the .NET Framework.

Aplica-se a

Confira também