Sdílet prostřednictvím


Socket.ReceiveMessageFrom Metoda

Definice

Přetížení

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

Přijme zadaný počet bajtů dat do zadaného umístění datové vyrovnávací paměti pomocí zadaného SocketFlagsa uloží informace o koncovém bodu a paketu.

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

Přijme zadaný počet bajtů dat do zadaného umístění datové vyrovnávací paměti pomocí zadaného socketFlagsa uloží informace o koncovém bodu a paketu.

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

Zdroj:
Socket.cs
Zdroj:
Socket.cs
Zdroj:
Socket.cs

Přijme zadaný počet bajtů dat do zadaného umístění datové vyrovnávací paměti pomocí zadaného SocketFlagsa uloží informace o koncovém bodu a paketu.

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

Parametry

buffer
Byte[]

Pole typu Byte , které je umístěním úložiště pro přijatá data.

offset
Int32

Pozice v parametru buffer pro uložení přijatých dat.

size
Int32

Počet bajtů, které se mají přijmout.

socketFlags
SocketFlags

Bitové kombinace SocketFlags hodnot.

remoteEP
EndPoint

Odkaz na EndPoint objekt stejného typu jako koncový bod vzdáleného hostitele, který se má aktualizovat při úspěšném přijetí.

ipPacketInformation
IPPacketInformation

Adresa IPPacketInformation holdingu a informace o rozhraní.

Návraty

Počet přijatých bajtů.

Výjimky

buffer je null.

-nebo-

remoteEP je null.

offset je menší než 0.

-nebo-

offsetje větší než délka .buffer

-nebo-

size je menší než 0.

-nebo-

size je větší než délka parametru buffer minus hodnota parametru posunu.

socketFlags není platná kombinace hodnot.

-nebo-

Vlastnost LocalEndPoint nebyla nastavena.

-nebo-

Rozhraní .NET Framework běží na 64bitovém procesoru AMD.

-nebo-

Při pokusu o přístup k soketu došlo k chybě.

Poznámky

Metoda ReceiveMessageFrom načte data do parametru buffer , vrátí počet bajtů, které byly úspěšně přečteny, a zachytí koncový bod vzdáleného hostitele, ze kterého byla data odeslána, a také informace o přijatém paketu.

Metoda se ReceiveMessageFrom primárně používá k příjmu dat zpráv na soketu bez připojení. Místní adresa soketu musí být známá. Tuto metodu lze použít pouze s datagramem a nezpracovanými sokety. Soket musí být inicializován s typem soketu nastaveným na Dgram nebo Raw před voláním této metody. To lze provést při vytváření soketu pomocí Socket.

U soketů orientovaných na zprávy se příchozí zpráva umístí do parametru buffer až do celkové velikosti zadané v parametru size . Parametr offset určuje umístění dat buffer . Skutečné množství dat umístěných do buffer je vráceno metodou ReceiveMessageFrom .

Metoda ReceiveMessageFrom automaticky nastaví PacketInformation možnost soketu na true první zavolání pro danou Socket. Vrácený IPPacketInformation objekt však bude platný pouze pro pakety, které přijdou do místního počítače po nastavení možnosti soketu. Pokud je soket odeslán pakety mezi, když je svázán s místním koncovým bodem (explicitně metodou Bind nebo implicitně některou z Connectmetod , ConnectAsync, SendTonebo SendToAsync ) a jeho prvním voláním ReceiveMessageFrom metody, volání ReceiveMessageFrom metody vrátí neplatné IPPacketInformation objekty pro tyto pakety.

Aby se zajistilo, že jsou všechny IPPacketInformation objekty platné, měla by aplikace nastavit možnost soketu PacketInformation na hodnotu před true tím, než je svázaná s místním koncovým bodem pomocí SetSocketOption(SocketOptionLevel, SocketOptionName, Boolean) metody .

Aplikace může parametr prozkoumat, ipPacketInformation pokud potřebuje zjistit, jestli byl datagram odeslán pomocí adresy jednosměrového vysílání, vícesměrového vysílání nebo všesměrového vysílání.

Poznámka

Hodnota AddressFamily použitého EndPoint v ReceiveFrom musí odpovídat hodnotě AddressFamilyEndPoint použité v SendTo.

Poznámka

Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace najdete v tématu Trasování sítě v rozhraní .NET Framework.

Viz také

Platí pro

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

Zdroj:
Socket.cs
Zdroj:
Socket.cs
Zdroj:
Socket.cs

Přijme zadaný počet bajtů dat do zadaného umístění datové vyrovnávací paměti pomocí zadaného socketFlagsa uloží informace o koncovém bodu a paketu.

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

Parametry

buffer
Span<Byte>

Typ Span<T>Byte , který je umístěním úložiště pro přijatá data.

socketFlags
SocketFlags

Bitové kombinace SocketFlags hodnot.

remoteEP
EndPoint

Odkaz na EndPoint objekt stejného typu jako koncový bod vzdáleného hostitele, který se má aktualizovat při úspěšném přijetí.

ipPacketInformation
IPPacketInformation

Adresa IPPacketInformation holdingu a informace o rozhraní.

Návraty

Počet přijatých bajtů.

Výjimky

Objekt Socket byl uzavřen.

RemoteEP EndPoint je null.

Objekt Socket není v režimu blokování a nemůže přijmout toto synchronní volání. Před provedením této operace je nutné volat metodu Bind.

Platí pro