Condividi tramite


Socket.ReceiveMessageFrom Metodo

Definizione

Overload

ReceiveMessageFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, IPPacketInformation)

Riceve il numero specificato di byte di dati nella posizione specificata del buffer dei dati usando l'oggetto SocketFlags specificato e archivia le informazioni dell'endpoint e del pacchetto.

ReceiveMessageFrom(Span<Byte>, SocketFlags, EndPoint, IPPacketInformation)

Riceve il numero specificato di byte di dati nella posizione specificata del buffer dei dati usando l'oggetto socketFlags specificato e archivia le informazioni dell'endpoint e del pacchetto.

ReceiveMessageFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, IPPacketInformation)

Origine:
Socket.cs
Origine:
Socket.cs
Origine:
Socket.cs

Riceve il numero specificato di byte di dati nella posizione specificata del buffer dei dati usando l'oggetto SocketFlags specificato e archivia le informazioni dell'endpoint e del pacchetto.

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

Parametri

buffer
Byte[]

Matrice di tipo Byte che rappresenta la posizione di archiviazione dei dati ricevuti.

offset
Int32

Posizione nel parametro buffer in cui archiviare i dati ricevuti.

size
Int32

Numero di byte da ricevere.

socketFlags
SocketFlags

Combinazione bit per bit dei valori di SocketFlags.

remoteEP
EndPoint

Riferimento a un EndPoint oggetto dello stesso tipo dell'endpoint dell'host remoto da aggiornare in caso di ricezione riuscita.

ipPacketInformation
IPPacketInformation

IPPacketInformation contenente informazioni sull'indirizzo e sull'interfaccia.

Restituisce

Numero di byte ricevuti.

Eccezioni

buffer è null.

-oppure-

remoteEP è null.

offset è minore di 0.

-oppure-

offset è maggiore della lunghezza di buffer.

-oppure-

size è minore di 0.

-oppure-

size è maggiore della lunghezza di buffer meno il valore del parametro di offset.

socketFlags non è una combinazione valida di valori.

-oppure-

La proprietà LocalEndPoint non è stata impostata.

-oppure-

.NET Framework viene eseguito in un processore AMD a 64 bit.

-oppure-

Si è verificato un errore durante il tentativo di accesso al socket.

L'oggetto Socket è stato chiuso.

Commenti

Il ReceiveMessageFrom metodo legge i dati nel buffer parametro , restituisce il numero di byte letti correttamente e acquisisce l'endpoint host remoto da cui sono stati inviati i dati, nonché informazioni sul pacchetto ricevuto.

Il ReceiveMessageFrom metodo viene usato principalmente per ricevere i dati dei messaggi su un socket senza connessione. L'indirizzo locale del socket deve essere noto. Questo metodo può essere usato solo con datagrammi e socket non elaborati. Il socket deve essere inizializzato con il tipo di socket impostato su Dgram o Raw prima di chiamare questo metodo. Questa operazione può essere eseguita quando il socket viene costruito usando Socket.

Per i socket orientati ai messaggi, un messaggio in arrivo viene inserito nel buffer parametro fino alla dimensione totale specificata nel size parametro . Il offset parametro determina dove vengono inseriti i buffer dati. La quantità effettiva di dati inseriti nell'oggetto buffer viene restituita dal ReceiveMessageFrom metodo .

Il ReceiveMessageFrom metodo imposta automaticamente l'opzione PacketInformationtrue socket alla prima chiamata per un determinato Socketoggetto . Tuttavia, l'oggetto restituito IPPacketInformation sarà valido solo per i pacchetti che arrivano nel computer locale dopo l'impostazione dell'opzione socket. Se un socket viene inviato pacchetti tra quando è associato a un endpoint locale (in modo esplicito dal Bind metodo o in modo implicito da uno dei Connectmetodi , ConnectAsync, SendToo SendToAsync ) e la ReceiveMessageFrom prima chiamata al metodo , le chiamate al ReceiveMessageFrom metodo restituiranno oggetti non validi IPPacketInformation per questi pacchetti.

Per assicurarsi che tutti gli IPPacketInformation oggetti siano validi, un'applicazione deve impostare l'opzione PacketInformation socket su true prima di essere associata a un endpoint locale usando il SetSocketOption(SocketOptionLevel, SocketOptionName, Boolean) metodo .

Un'applicazione può esaminare il ipPacketInformation parametro se deve sapere se il datagramma è stato inviato usando un indirizzo unicast, multicast o broadcast.

Nota

Oggetto AddressFamily dell'oggetto EndPoint utilizzato in ReceiveFrom deve corrispondere all'oggetto AddressFamily dell'oggetto EndPoint utilizzato in SendTo.

Nota

Questo membro genera informazioni di traccia quando viene abilitata la funzionalità di traccia di rete nell'applicazione in uso. Per altre informazioni, vedere Traccia di rete in .NET Framework.

Vedi anche

Si applica a

ReceiveMessageFrom(Span<Byte>, SocketFlags, EndPoint, IPPacketInformation)

Origine:
Socket.cs
Origine:
Socket.cs
Origine:
Socket.cs

Riceve il numero specificato di byte di dati nella posizione specificata del buffer dei dati usando l'oggetto socketFlags specificato e archivia le informazioni dell'endpoint e del pacchetto.

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

Parametri

buffer
Span<Byte>

Oggetto Span<T> di tipo Byte che rappresenta la posizione di archiviazione per i dati ricevuti.

socketFlags
SocketFlags

Combinazione bit per bit dei valori di SocketFlags.

remoteEP
EndPoint

Riferimento a un EndPoint oggetto dello stesso tipo dell'endpoint dell'host remoto da aggiornare in caso di ricezione riuscita.

ipPacketInformation
IPPacketInformation

IPPacketInformation contenente informazioni sull'indirizzo e sull'interfaccia.

Restituisce

Numero di byte ricevuti.

Eccezioni

L'oggetto Socket è stato chiuso.

RemoteEP EndPoint è null.

Oggetto AddressFamily dell'oggetto EndPoint utilizzato in ReceiveMessageFrom(Span<Byte>, SocketFlags, EndPoint, IPPacketInformation) deve corrispondere all'oggetto AddressFamily dell'oggetto EndPoint utilizzato in SendTo.

L'oggetto Socket non è in modalità di blocco e non può accettare questa chiamata sincrona. È necessario chiamare il metodo Bind prima di eseguire questa operazione.

Si applica a