次の方法で共有


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 未満です。

または

offsetbuffer の長さを超えています。

または

size が 0 未満です。

- または -

size が、buffer の長さからオフセット パラメーターの値を引いた値を超えています。

socketFlags は、値の有効な組み合わせではありません。

- または -

LocalEndPoint プロパティが設定されていませんでした。

- または -

.NET Framework が、AMD 64 ビット プロセッサ上で実行されています。

- または -

ソケットへのアクセスを試行しているときにエラーが発生しました。

Socket が閉じられました。

注釈

メソッドは ReceiveMessageFrom 、 パラメーターにデータを buffer 読み取り、正常に読み取られたバイト数を返し、データの送信元のリモート ホスト エンドポイントと、受信したパケットに関する情報をキャプチャします。

メソッドは ReceiveMessageFrom 、主にコネクションレス ソケットでメッセージ データを受信するために使用されます。 ソケットのローカル アドレスは既知である必要があります。 このメソッドは、データグラムと生のソケットでのみ使用できます。 ソケットは、このメソッドを呼び出す前に、 または Raw に設定されたソケット型でDgram初期化する必要があります。 これは、 を使用して Socketソケットを構築するときに行うことができます。

メッセージ指向ソケットの場合、受信メッセージは、 パラメーターで buffer 指定された合計サイズまでパラメーターに size 配置されます。 パラメーターは offset 、データの buffer どこに配置するかを決定します。 に buffer 配置された実際のデータ量は、 メソッドによって ReceiveMessageFrom 返されます。

メソッドはReceiveMessageFrom、指定Socketされた に対してPacketInformationtrue初めて呼び出されるときにソケット オプションを自動的に設定します。 ただし、返される IPPacketInformation オブジェクトは、ソケット オプションが設定された後にローカル コンピューターに到着するパケットに対してのみ有効です。 ソケットがローカル エンドポイントにバインドされたとき (メソッドによって明示的に、または 、、または SendToAsync のいずれかのメソッドによってBind暗黙的に) とメソッドの最初のConnectSendToConnectAsync呼び出しの間にパケットが送信された場合、メソッドの呼ReceiveMessageFromび出しはこれらのパケットに対して無効なIPPacketInformationオブジェクトをReceiveMessageFrom返します。

すべてのIPPacketInformationオブジェクトが有効であることを確認するには、 メソッドを使用してSetSocketOption(SocketOptionLevel, SocketOptionName, Boolean)ローカル エンドポイントにtrueバインドする前に、アプリケーションでソケット オプションを に設定PacketInformationする必要があります。

アプリケーションは、ユニキャスト、マルチキャスト、またはブロードキャスト アドレスを使用してデータグラムが送信されたかどうかを知る必要がある場合に、 パラメーターを調べることができます ipPacketInformation

注意

で使用される の EndPointAddressFamily、 でReceiveFrom使用される の とEndPointSendTo一致AddressFamilyする必要があります。

Note

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。 詳細については、「.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

ReceiveMessageFrom(Span<Byte>, SocketFlags, EndPoint, IPPacketInformation)使用される の EndPointAddressFamily、SendTo で使用される の EndPoint と一致AddressFamilyする必要があります。

Socket オブジェクトはブロック モードではなく、この同期呼び出しを受け付けることができません。 この操作を実行する前に、Bind メソッドを呼び出す必要があります。

適用対象