Socket.ReceiveMessageFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, IPPacketInformation) メソッド

定義

指定した SocketFlags を使用して、指定したバイト数のデータをデータ バッファー内の指定した位置で受信して、エンドポイントおよびパケット情報を格納します。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

パラメーター

buffer
Byte[]

受信したデータの格納場所である、Byte 型の配列。An array of type Byte that is the storage location for received data.

offset
Int32

受信したデータを格納する、buffer パラメーター内の位置。The position in the buffer parameter to store the received data.

size
Int32

受信するバイト数。The number of bytes to receive.

socketFlags
SocketFlags

SocketFlags 値のビットごとの組み合わせ。A bitwise combination of the SocketFlags values.

remoteEP
EndPoint

リモート サーバーを表す、参照渡しされた EndPointAn EndPoint, passed by reference, that represents the remote server.

ipPacketInformation
IPPacketInformation

アドレスとインターフェイスの情報を保持する IPPacketInformationAn IPPacketInformation holding address and interface information.

戻り値

Int32

受信されたバイト数。The number of bytes received.

例外

buffernullです。buffer is null.

または-or- remoteEPnullです。remoteEP is null.

offset が 0 未満です。offset is less than 0.

または-or- offsetbuffer の長さを超えています。offset is greater than the length of buffer.

または-or- size が 0 未満です。size is less than 0.

- または --or- size が、buffer の長さからオフセット パラメーターの値を引いた値を超えています。size is greater than the length of the buffer minus the value of the offset parameter.

socketFlags は、値の有効な組み合わせではありません。socketFlags is not a valid combination of values.

- または --or- LocalEndPoint プロパティが設定されていませんでした。The LocalEndPoint property was not set.

- または --or- .NET Framework が、AMD 64 ビット プロセッサ上で実行されています。The .NET Framework is running on an AMD 64-bit processor.

- または --or- ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket.

Socket が閉じられました。The Socket has been closed.

注釈

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

ReceiveMessageFromメソッドは、主にコネクションレスソケットでメッセージデータを受信するために使用されます。The ReceiveMessageFrom method is used primarily to receive message data on a connectionless socket. ソケットのローカルアドレスがわかっている必要があります。The socket's local address must be known. このメソッドは、データグラムと raw ソケットでのみ使用できます。This method can only be used with datagram and raw sockets. Dgramこのメソッドを呼び出す前に、ソケットの種類をまたはに設定して、ソケットを初期化する必要があり Raw ます。The socket must be initialized with the socket type set to Dgram or Raw before calling this method. これは、を使用してソケットを構築するときに実行でき Socket ます。This can be done when the socket is constructed using Socket.

メッセージ指向のソケットの場合、パラメーターに buffer 指定された合計サイズまで、受信メッセージがパラメーターに配置され size ます。For message-oriented sockets, an incoming message is placed into the buffer parameter up to the total size specified in the size parameter. パラメーターは、 offset データのどこに配置されるかを決定し buffer ます。The offset parameter determines where in the buffer the data is placed. に格納される実際のデータ量 buffer は、メソッドによって返され ReceiveMessageFrom ます。The actual amount of data placed into the buffer is returned by the ReceiveMessageFrom method.

メソッドは、指定されたに ReceiveMessageFrom PacketInformation 対して初めて呼び出されるときに、socket オプションを自動的に設定し true Socket ます。The ReceiveMessageFrom method automatically method sets the PacketInformation socket option to true the first time it is called for a given Socket. ただし、返される IPPacketInformation オブジェクトは、ソケットオプションが設定された後にローカルコンピューターに到着するパケットに対してのみ有効です。However, the returned IPPacketInformation object will only be valid for packets which arrive at the local computer after the socket option has been set. ソケットがローカルエンドポイントにバインドされる (メソッドによって明示的に、または、、、またはメソッドのいずれかによって暗黙的に) によってパケットが送信された場合、メソッドを呼び出すと、 Bind Connect ConnectAsync SendTo SendToAsync ReceiveMessageFrom ReceiveMessageFrom IPPacketInformation これらのパケットに対して無効なオブジェクトが返されます。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.

すべてのオブジェクトが有効であることを確認するには、 IPPacketInformation アプリケーションで socket オプションをに設定してから、 PacketInformation メソッドを true 使用してローカルエンドポイントにバインドし SetSocketOption(SocketOptionLevel, SocketOptionName, Boolean) ます。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.

アプリケーションでは、 ipPacketInformation ユニキャストアドレス、マルチキャストアドレス、またはブロードキャストアドレスを使用してデータグラムが送信されたかどうかを確認する必要がある場合に、パラメーターを調べることができます。An application can examine the ipPacketInformation parameter if it needs to know if the datagram was sent using a unicast, multicast, or broadcast address.

注意

で使用されるのは、 AddressFamily EndPoint ReceiveFrom AddressFamily で使用されているのと一致する必要があり EndPoint SendTo ます。The AddressFamily of the EndPoint used in ReceiveFrom needs to match the AddressFamily of the EndPoint used in SendTo.

注意

このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。This member outputs trace information when you enable network tracing in your application. 詳細については、「 .NET Framework のネットワークトレース」を参照してください。For more information, see Network Tracing in the .NET Framework.

適用対象

こちらもご覧ください