Socket.ReceiveMessageFrom 方法

定義

多載

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

使用指定的 SocketFlags,將指定的資料位元組數目接收至資料緩衝區的指定位置,並儲存端點及封包資訊。

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

使用指定的 socketFlags,將指定的資料位元組數目接收至資料緩衝區的指定位置,並儲存端點及封包資訊。

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

來源:
Socket.cs
來源:
Socket.cs
來源:
Socket.cs

使用指定的 SocketFlags,將指定的資料位元組數目接收至資料緩衝區的指定位置,並儲存端點及封包資訊。

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

參數

buffer
Byte[]

類型 Byte 的陣列,此為接收資料的儲存位置。

offset
Int32

buffer 參數中的位置,可儲存接收的資料。

size
Int32

要接收的位元組數。

socketFlags
SocketFlags

SocketFlags 值的位元組合。

remoteEP
EndPoint

與成功接收時要更新之遠端主機端點相同類型的 參考 EndPoint

ipPacketInformation
IPPacketInformation

保留位址及介面資訊的 IPPacketInformation

傳回

收到的位元組數目。

例外狀況

buffernull

-或-

remoteEPnull

offset 小於 0。

-或-

offset 大於 buffer 的長度。

-或-

size 小於 0。

-或-

size 大於 buffer 的長度減去位移參數的值。

socketFlags 不是有效的值組合。

-或-

未設定 LocalEndPoint 屬性。

-或-

.NET Framework 正在 AMD 64 位元處理器上執行。

-或-

嘗試存取通訊端時發生錯誤。

備註

方法 ReceiveMessageFrom 會將數據讀取至 buffer 參數、傳回成功讀取的位元元組數目,並擷取傳送數據的遠端主機端點,以及所接收封包的相關信息。

方法 ReceiveMessageFrom 主要用於接收無連接套接字上的訊息數據。 必須知道套接字的本機位址。 這個方法只能與數據報和原始套接字搭配使用。 在呼叫此方法之前,套接字類型必須設定為 DgramRaw ,才能初始化套接字。 使用 建構 Socket套接字時,可以完成此作業。

對於訊息導向套接字,傳入的訊息會放在 buffer 參數中,最多可達參數中指定的 size 總大小。 參數 offset 會決定放置數據的位置 buffer 。 方法會傳ReceiveMessageFrom回放入 buffer 的實際數據量。

ReceiveMessageFrom方法會自動將套接字選項true設定PacketInformation為第一次針對指定的Socket呼叫。 不過,傳 IPPacketInformation 回的物件只適用於在設定套接字選項之後抵達本機計算機的封包。 如果套接字在 系結至本機端點時傳送封包, (由 方法明確 Bind (,或由其中一個 ConnectConnectAsyncSendToSendToAsync) 方法隱含地傳送至 方法,則ReceiveMessageFromReceiveMessageFrom呼叫 方法會傳回這些封包的無效IPPacketInformation物件。

為了確保所有IPPacketInformation物件都有效,應用程式應該先將套接字選項true設定PacketInformation為 ,再使用 SetSocketOption(SocketOptionLevel, SocketOptionName, Boolean) 方法系結至本機端點。

應用程式可以使用單播、多播或廣播位址來檢查 ipPacketInformation 參數是否需要知道數據報是否已傳送。

注意

AddressFamilyEndPointReceiveFrom所使用的 必須符合 EndPointAddressFamilySendTo所使用的 。

注意

在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤

另請參閱

適用於

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

來源:
Socket.cs
來源:
Socket.cs
來源:
Socket.cs

使用指定的 socketFlags,將指定的資料位元組數目接收至資料緩衝區的指定位置,並儲存端點及封包資訊。

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

參數

buffer
Span<Byte>

Span<T>Byte別的 ,這是已接收資料的儲存位置。

socketFlags
SocketFlags

SocketFlags 值的位元組合。

remoteEP
EndPoint

與成功接收時要更新之遠端主機端點相同類型的 參考 EndPoint

ipPacketInformation
IPPacketInformation

保留位址及介面資訊的 IPPacketInformation

傳回

收到的位元組數目。

例外狀況

Socket物件已關閉。

EndPoint remoteEP 為 null

Socket 物件不是處於封鎖模式,而且無法接受此同步呼叫。 您必須先呼叫 Bind 方法,才能執行這項作業。

適用於