Socket.BeginReceive メソッド
定義
オーバーロード
BeginReceive(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object) |
接続されている Socket からの非同期のデータ受信を開始します。Begins to asynchronously receive data from a connected Socket. |
BeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) |
接続されている Socket からの非同期のデータ受信を開始します。Begins to asynchronously receive data from a connected Socket. |
BeginReceive(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object) |
接続されている Socket からの非同期のデータ受信を開始します。Begins to asynchronously receive data from a connected Socket. |
BeginReceive(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object) |
接続されている Socket からの非同期のデータ受信を開始します。Begins to asynchronously receive data from a connected Socket. |
BeginReceive(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)
public:
IAsyncResult ^ BeginReceive(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode, AsyncCallback ^ callback, System::Object ^ state);
public:
IAsyncResult ^ BeginReceive(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags flags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % error, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult? BeginReceive (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError? errorCode, AsyncCallback? callback, object? state);
public IAsyncResult BeginReceive (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback callback, object state);
public IAsyncResult BeginReceive (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags flags, out System.Net.Sockets.SocketError error, AsyncCallback callback, object state);
member this.BeginReceive : byte[] * int * int * System.Net.Sockets.SocketFlags * SocketError * AsyncCallback * obj -> IAsyncResult
member this.BeginReceive : byte[] * int * int * System.Net.Sockets.SocketFlags * SocketError * AsyncCallback * obj -> IAsyncResult
Public Function BeginReceive (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef errorCode As SocketError, callback As AsyncCallback, state As Object) As IAsyncResult
Public Function BeginReceive (buffer As Byte(), offset As Integer, size As Integer, flags As SocketFlags, ByRef error As SocketError, callback As AsyncCallback, state As Object) As IAsyncResult
パラメーター
- buffer
- Byte[]
受信したデータの保存場所となる Byte 型の配列。An array of type Byte that is the storage location for the received data.
- offset
- Int32
受信データを格納する buffer
内の場所。The location in buffer
to store the received data.
- size
- Int32
受信するバイト数。The number of bytes to receive.
- socketFlagsflags
- SocketFlags
SocketFlags 値のビットごとの組み合わせ。A bitwise combination of the SocketFlags values.
- errorCodeerror
- SocketError
ソケット エラーを格納する SocketError オブジェクト。A SocketError object that stores the socket error.
- callback
- AsyncCallback
操作の完了時に呼び出すメソッドを参照する AsyncCallback デリゲート。An AsyncCallback delegate that references the method to invoke when the operation is complete.
- state
- Object
受信操作に関する情報を格納するユーザー定義のオブジェクト。A user-defined object that contains information about the receive operation. このオブジェクトは、操作の完了時に EndReceive(IAsyncResult) デリゲートに渡されます。This object is passed to the EndReceive(IAsyncResult) delegate when the operation is complete.
戻り値
非同期の読み取りを参照する IAsyncResult。An IAsyncResult that references the asynchronous read.
例外
buffer
が null
です。buffer
is null
.
ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket.
offset
が 0 未満です。offset
is less than 0.
または-or-
offset
が buffer
の長さを超えています。offset
is greater than the length of buffer
.
または-or-
size
が 0 未満です。size
is less than 0.
- または --or-
size
が、buffer
の長さから offset
パラメーターの値を引いた値を超えています。size
is greater than the length of buffer
minus the value of the offset
parameter.
注釈
非同期操作は、 BeginReceive メソッドを呼び出すことによって完了する必要があり EndReceive ます。The asynchronous BeginReceive operation must be completed by calling the EndReceive method. 通常、メソッドはデリゲートによって呼び出され callback
ます。Typically, the method is invoked by the callback
delegate.
このメソッドは、操作が完了するまでブロックしません。This method does not block until the operation is complete. 操作が完了するまでブロックするには、メソッドオーバーロードのいずれかを使用し Receive ます。To block until the operation is complete, use one of the Receive method overloads.
保留中のを取り消すには、 BeginReceive メソッドを呼び出し Close ます。To cancel a pending BeginReceive, call the Close method.
非同期プログラミングモデルの使用方法の詳細については、「 同期メソッドの非同期呼び出し」を参照してください。For detailed information about using the asynchronous programming model, see Calling Synchronous Methods Asynchronously.
注意
を受け取った場合は、プロパティを使用して、 SocketException SocketException.ErrorCode 特定のエラーコードを取得します。If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. このコードを取得したら、 Windows Sockets version 2 API エラーコード のドキュメントを参照して、エラーの詳細な説明を参照してください。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.
注意
特定のスレッドによって開始されるすべての i/o は、そのスレッドが終了すると取り消されます。All I/O initiated by a given thread is canceled when that thread exits. 保留中の非同期操作は、操作が完了する前にスレッドが終了した場合に失敗する可能性があります。A pending asynchronous operation can fail if the thread exits before the operation completes.
注意
state
は、ユーザー定義クラスのインスタンス化です。state
is an instantiation of a user-defined class.
注意
このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。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.
注意
非同期メソッドに対して、実行コンテキスト (セキュリティコンテキスト、権限を借用したユーザー、および呼び出し元のコンテキスト) がキャッシュされ Socket ます。The execution context (the security context, the impersonated user, and the calling context) is cached for the asynchronous Socket methods. 特定のコンテキスト (特定の非同期メソッド、特定のインスタンス、および特定のコールバック) を初めて使用した後 Socket Socket 、そのコンテキストを使用すると、パフォーマンスが向上します。After the first use of a particular context (a specific asynchronous Socket method, a specific Socket instance, and a specific callback), subsequent uses of that context will see a performance improvement.
こちらもご覧ください
- EndAccept(IAsyncResult)
- AsyncCallback
- Connect(EndPoint)
- BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)
- コールバック メソッドとしてのデリゲートのマーシャ リングMarshaling a Delegate as a Callback Method
- 非同期クライアント ソケットの例Asynchronous Client Socket Example
- 非同期サーバー ソケットの例Asynchronous Server Socket Example
適用対象
BeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)
public:
IAsyncResult ^ BeginReceive(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, AsyncCallback ^ callback, System::Object ^ state);
public:
IAsyncResult ^ BeginReceive(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socket_flags, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginReceive (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback? callback, object? state);
public IAsyncResult BeginReceive (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback callback, object state);
public IAsyncResult BeginReceive (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socket_flags, AsyncCallback callback, object state);
member this.BeginReceive : byte[] * int * int * System.Net.Sockets.SocketFlags * AsyncCallback * obj -> IAsyncResult
member this.BeginReceive : byte[] * int * int * System.Net.Sockets.SocketFlags * AsyncCallback * obj -> IAsyncResult
Public Function BeginReceive (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, callback As AsyncCallback, state As Object) As IAsyncResult
Public Function BeginReceive (buffer As Byte(), offset As Integer, size As Integer, socket_flags As SocketFlags, callback As AsyncCallback, state As Object) As IAsyncResult
パラメーター
- buffer
- Byte[]
受信したデータの保存場所となる Byte 型の配列。An array of type Byte that is the storage location for the received data.
- offset
- Int32
受信データを格納する、buffer
パラメーター内の、インデックス番号が 0 から始まる位置。The zero-based position in the buffer
parameter at which to store the received data.
- size
- Int32
受信するバイト数。The number of bytes to receive.
- socketFlagssocket_flags
- SocketFlags
SocketFlags 値のビットごとの組み合わせ。A bitwise combination of the SocketFlags values.
- callback
- AsyncCallback
操作の完了時に呼び出すメソッドを参照する AsyncCallback デリゲート。An AsyncCallback delegate that references the method to invoke when the operation is complete.
- state
- Object
受信操作に関する情報を格納するユーザー定義のオブジェクト。A user-defined object that contains information about the receive operation. このオブジェクトは、操作の完了時に EndReceive(IAsyncResult) デリゲートに渡されます。This object is passed to the EndReceive(IAsyncResult) delegate when the operation is complete.
戻り値
非同期の読み取りを参照する IAsyncResult。An IAsyncResult that references the asynchronous read.
例外
buffer
が null
です。buffer
is null
.
ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket.
offset
が 0 未満です。offset
is less than 0.
または-or-
offset
が buffer
の長さを超えています。offset
is greater than the length of buffer
.
または-or-
size
が 0 未満です。size
is less than 0.
- または --or-
size
が、buffer
の長さから offset
パラメーターの値を引いた値を超えています。size
is greater than the length of buffer
minus the value of the offset
parameter.
例
次のコード例では、接続されているからデータの非同期受信を開始し Socket ます。The following code example begins to asynchronously receive data from a connected Socket.
public ref class StateObject
{
public:
literal int BUFFER_SIZE = 1024;
Socket^ workSocket;
array<Byte>^ buffer;
StringBuilder^ sb;
StateObject() : workSocket( nullptr )
{
buffer = gcnew array<Byte>(BUFFER_SIZE);
sb = gcnew StringBuilder;
}
};
public class StateObject{
public Socket workSocket = null;
public const int BUFFER_SIZE = 1024;
public byte[] buffer = new byte[BUFFER_SIZE];
public StringBuilder sb = new StringBuilder();
}
Public Class StateObject
Public workSocket As Socket = Nothing
Public const BUFFER_SIZE As Integer = 1024
Public buffer(BUFFER_SIZE) As byte
Public sb As New StringBuilder()
End Class
static void Listen_Callback( IAsyncResult^ ar )
{
allDone->Set();
Socket^ s = safe_cast<Socket^>(ar->AsyncState);
Socket^ s2 = s->EndAccept( ar );
StateObject^ so2 = gcnew StateObject;
so2->workSocket = s2;
s2->BeginReceive( so2->buffer, 0, StateObject::BUFFER_SIZE, SocketFlags::None,
gcnew AsyncCallback( &Async_Send_Receive::Read_Callback ), so2 );
}
public static void Listen_Callback(IAsyncResult ar){
allDone.Set();
Socket s = (Socket) ar.AsyncState;
Socket s2 = s.EndAccept(ar);
StateObject so2 = new StateObject();
so2.workSocket = s2;
s2.BeginReceive(so2.buffer, 0, StateObject.BUFFER_SIZE,0,
new AsyncCallback(Async_Send_Receive.Read_Callback), so2);
}
Public Shared Sub Listen_Callback(ar As IAsyncResult)
allDone.Set()
Dim s As Socket = CType(ar.AsyncState, Socket)
Dim s2 As Socket = s.EndAccept(ar)
Dim so2 As New StateObject()
so2.workSocket = s2
s2.BeginReceive(so2.buffer, 0, StateObject.BUFFER_SIZE, 0, New AsyncCallback(AddressOf Async_Send_Receive.Read_Callback), so2)
End Sub
static void Read_Callback( IAsyncResult^ ar )
{
StateObject^ so = safe_cast<StateObject^>(ar->AsyncState);
Socket^ s = so->workSocket;
int read = s->EndReceive( ar );
if ( read > 0 )
{
so->sb->Append( Encoding::ASCII->GetString( so->buffer, 0, read ) );
s->BeginReceive( so->buffer, 0, StateObject::BUFFER_SIZE, SocketFlags::None,
gcnew AsyncCallback( &Async_Send_Receive::Read_Callback ), so );
}
else
{
if ( so->sb->Length > 1 )
{
//All of the data has been read, so displays it to the console
String^ strContent = so->sb->ToString();
Console::WriteLine( String::Format( "Read {0} byte from socket" +
" data = {1} ", strContent->Length, strContent ) );
}
s->Close();
}
}
public static void Read_Callback(IAsyncResult ar){
StateObject so = (StateObject) ar.AsyncState;
Socket s = so.workSocket;
int read = s.EndReceive(ar);
if (read > 0) {
so.sb.Append(Encoding.ASCII.GetString(so.buffer, 0, read));
s.BeginReceive(so.buffer, 0, StateObject.BUFFER_SIZE, 0,
new AsyncCallback(Async_Send_Receive.Read_Callback), so);
}
else{
if (so.sb.Length > 1) {
//All of the data has been read, so displays it to the console
string strContent;
strContent = so.sb.ToString();
Console.WriteLine(String.Format("Read {0} byte from socket" +
"data = {1} ", strContent.Length, strContent));
}
s.Close();
}
}
Public Shared Sub Read_Callback(ar As IAsyncResult)
Dim so As StateObject = CType(ar.AsyncState, StateObject)
Dim s As Socket = so.workSocket
Dim read As Integer = s.EndReceive(ar)
If read > 0 Then
so.sb.Append(Encoding.ASCII.GetString(so.buffer, 0, read))
s.BeginReceive(so.buffer, 0, StateObject.BUFFER_SIZE, 0, New AsyncCallback(AddressOf Async_Send_Receive.Read_Callback), so)
Else
If so.sb.Length > 1 Then
'All the data has been read, so displays it to the console
Dim strContent As String
strContent = so.sb.ToString()
Console.WriteLine([String].Format("Read {0} byte from socket" + "data = {1} ", strContent.Length, strContent))
End If
s.Close()
End If
End Sub
注釈
非同期操作は、 BeginReceive メソッドを呼び出すことによって完了する必要があり EndReceive ます。The asynchronous BeginReceive operation must be completed by calling the EndReceive method. 通常、メソッドはデリゲートによって呼び出され callback
ます。Typically, the method is invoked by the callback
delegate.
このメソッドは、操作が完了するまでブロックしません。This method does not block until the operation is complete. 操作が完了するまでブロックするには、メソッドオーバーロードのいずれかを使用し Receive ます。To block until the operation is complete, use one of the Receive method overloads.
保留中のを取り消すには、 BeginReceive メソッドを呼び出し Close ます。To cancel a pending BeginReceive, call the Close method.
非同期プログラミングモデルの使用方法の詳細については、「 同期メソッドの非同期呼び出し」を参照してください。For detailed information about using the asynchronous programming model, see Calling Synchronous Methods Asynchronously.
注意
を受け取った場合は、プロパティを使用して、 SocketException SocketException.ErrorCode 特定のエラーコードを取得します。If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. このコードを取得したら、 Windows Sockets version 2 API エラーコード のドキュメントを参照して、エラーの詳細な説明を参照してください。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.
注意
特定のスレッドによって開始されるすべての i/o は、そのスレッドが終了すると取り消されます。All I/O initiated by a given thread is canceled when that thread exits. 保留中の非同期操作は、操作が完了する前にスレッドが終了した場合に失敗する可能性があります。A pending asynchronous operation can fail if the thread exits before the operation completes.
注意
state
は、ユーザー定義クラスのインスタンス化です。state
is an instantiation of a user-defined class.
注意
このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。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.
注意
非同期メソッドに対して、実行コンテキスト (セキュリティコンテキスト、権限を借用したユーザー、および呼び出し元のコンテキスト) がキャッシュされ Socket ます。The execution context (the security context, the impersonated user, and the calling context) is cached for the asynchronous Socket methods. 特定のコンテキスト (特定の非同期メソッド、特定のインスタンス、および特定のコールバック) を初めて使用した後 Socket Socket 、そのコンテキストを使用すると、パフォーマンスが向上します。After the first use of a particular context (a specific asynchronous Socket method, a specific Socket instance, and a specific callback), subsequent uses of that context will see a performance improvement.
こちらもご覧ください
- EndAccept(IAsyncResult)
- AsyncCallback
- Connect(EndPoint)
- BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)
- コールバック メソッドとしてのデリゲートのマーシャ リングMarshaling a Delegate as a Callback Method
- 非同期クライアント ソケットの例Asynchronous Client Socket Example
- 非同期サーバー ソケットの例Asynchronous Server Socket Example
適用対象
BeginReceive(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object)
重要
この API は CLS 準拠ではありません。
public:
IAsyncResult ^ BeginReceive(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult? BeginReceive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError? errorCode, AsyncCallback? callback, object? state);
public IAsyncResult BeginReceive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback callback, object state);
[System.CLSCompliant(false)]
public IAsyncResult BeginReceive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback callback, object state);
member this.BeginReceive : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * SocketError * AsyncCallback * obj -> IAsyncResult
[<System.CLSCompliant(false)>]
member this.BeginReceive : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * SocketError * AsyncCallback * obj -> IAsyncResult
Public Function BeginReceive (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, ByRef errorCode As SocketError, callback As AsyncCallback, state As Object) As IAsyncResult
パラメーター
- buffers
- IList<ArraySegment<Byte>>
受信したデータの保存場所となる Byte 型の配列。An array of type Byte that is the storage location for the received data.
- socketFlags
- SocketFlags
SocketFlags 値のビットごとの組み合わせ。A bitwise combination of the SocketFlags values.
- errorCode
- SocketError
ソケット エラーを格納する SocketError オブジェクト。A SocketError object that stores the socket error.
- callback
- AsyncCallback
操作の完了時に呼び出すメソッドを参照する AsyncCallback デリゲート。An AsyncCallback delegate that references the method to invoke when the operation is complete.
- state
- Object
受信操作に関する情報を格納するユーザー定義のオブジェクト。A user-defined object that contains information about the receive operation. このオブジェクトは、操作の完了時に EndReceive(IAsyncResult) デリゲートに渡されます。This object is passed to the EndReceive(IAsyncResult) delegate when the operation is complete.
戻り値
非同期の読み取りを参照する IAsyncResult。An IAsyncResult that references the asynchronous read.
- 属性
例外
buffer
が null
です。buffer
is null
.
ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket.
注釈
非同期操作は、 BeginReceive メソッドを呼び出すことによって完了する必要があり EndReceive ます。The asynchronous BeginReceive operation must be completed by calling the EndReceive method. 通常、メソッドはデリゲートによって呼び出され callback
ます。Typically, the method is invoked by the callback
delegate.
このメソッドは、操作が完了するまでブロックしません。This method does not block until the operation is complete. 操作が完了するまでブロックするには、メソッドオーバーロードのいずれかを使用し Receive ます。To block until the operation is complete, use one of the Receive method overloads.
保留中のを取り消すには、 BeginReceive メソッドを呼び出し Close ます。To cancel a pending BeginReceive, call the Close method.
非同期プログラミングモデルの使用方法の詳細については、「 同期メソッドの非同期呼び出し」を参照してください。For detailed information about using the asynchronous programming model, see Calling Synchronous Methods Asynchronously.
注意
を受け取った場合は、プロパティを使用して、 SocketException SocketException.ErrorCode 特定のエラーコードを取得します。If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. このコードを取得したら、 Windows Sockets version 2 API エラーコード のドキュメントを参照して、エラーの詳細な説明を参照してください。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.
注意
特定のスレッドによって開始されるすべての i/o は、そのスレッドが終了すると取り消されます。All I/O initiated by a given thread is canceled when that thread exits. 保留中の非同期操作は、操作が完了する前にスレッドが終了した場合に失敗する可能性があります。A pending asynchronous operation can fail if the thread exits before the operation completes.
注意
state
は、ユーザー定義クラスのインスタンス化です。state
is an instantiation of a user-defined class.
注意
このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。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.
注意
非同期メソッドに対して、実行コンテキスト (セキュリティコンテキスト、権限を借用したユーザー、および呼び出し元のコンテキスト) がキャッシュされ Socket ます。The execution context (the security context, the impersonated user, and the calling context) is cached for the asynchronous Socket methods. 特定のコンテキスト (特定の非同期メソッド、特定のインスタンス、および特定のコールバック) を初めて使用した後 Socket Socket 、そのコンテキストを使用すると、パフォーマンスが向上します。After the first use of a particular context (a specific asynchronous Socket method, a specific Socket instance, and a specific callback), subsequent uses of that context will see a performance improvement.
こちらもご覧ください
- EndAccept(IAsyncResult)
- AsyncCallback
- Connect(EndPoint)
- BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)
- コールバック メソッドとしてのデリゲートのマーシャ リングMarshaling a Delegate as a Callback Method
- 非同期クライアント ソケットの例Asynchronous Client Socket Example
- 非同期サーバー ソケットの例Asynchronous Server Socket Example
適用対象
BeginReceive(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)
重要
この API は CLS 準拠ではありません。
public:
IAsyncResult ^ BeginReceive(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginReceive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback? callback, object? state);
public IAsyncResult BeginReceive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback callback, object state);
[System.CLSCompliant(false)]
public IAsyncResult BeginReceive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback callback, object state);
member this.BeginReceive : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * AsyncCallback * obj -> IAsyncResult
[<System.CLSCompliant(false)>]
member this.BeginReceive : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * AsyncCallback * obj -> IAsyncResult
Public Function BeginReceive (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, callback As AsyncCallback, state As Object) As IAsyncResult
パラメーター
- buffers
- IList<ArraySegment<Byte>>
受信したデータの保存場所となる Byte 型の配列。An array of type Byte that is the storage location for the received data.
- socketFlags
- SocketFlags
SocketFlags 値のビットごとの組み合わせ。A bitwise combination of the SocketFlags values.
- callback
- AsyncCallback
操作の完了時に呼び出すメソッドを参照する AsyncCallback デリゲート。An AsyncCallback delegate that references the method to invoke when the operation is complete.
- state
- Object
受信操作に関する情報を格納するユーザー定義のオブジェクト。A user-defined object that contains information about the receive operation. このオブジェクトは、操作の完了時に EndReceive(IAsyncResult) デリゲートに渡されます。This object is passed to the EndReceive(IAsyncResult) delegate when the operation is complete.
戻り値
非同期の読み取りを参照する IAsyncResult。An IAsyncResult that references the asynchronous read.
- 属性
例外
buffer
が null
です。buffer
is null
.
ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket.
注釈
非同期操作は、 BeginReceive メソッドを呼び出すことによって完了する必要があり EndReceive ます。The asynchronous BeginReceive operation must be completed by calling the EndReceive method. 通常、メソッドはデリゲートによって呼び出され callback
ます。Typically, the method is invoked by the callback
delegate.
このメソッドは、操作が完了するまでブロックしません。This method does not block until the operation is complete. 操作が完了するまでブロックするには、メソッドオーバーロードのいずれかを使用し Receive ます。To block until the operation is complete, use one of the Receive method overloads.
保留中のを取り消すには、 BeginReceive メソッドを呼び出し Close ます。To cancel a pending BeginReceive, call the Close method.
非同期プログラミングモデルの使用方法の詳細については、「 同期メソッドの非同期呼び出し」を参照してください。For detailed information about using the asynchronous programming model, see Calling Synchronous Methods Asynchronously.
注意
を受け取った場合は、プロパティを使用して、 SocketException SocketException.ErrorCode 特定のエラーコードを取得します。If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. このコードを取得したら、 Windows Sockets version 2 API エラーコード のドキュメントを参照して、エラーの詳細な説明を参照してください。After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.
注意
特定のスレッドによって開始されるすべての i/o は、そのスレッドが終了すると取り消されます。All I/O initiated by a given thread is canceled when that thread exits. 保留中の非同期操作は、操作が完了する前にスレッドが終了した場合に失敗する可能性があります。A pending asynchronous operation can fail if the thread exits before the operation completes.
注意
state
は、ユーザー定義クラスのインスタンス化です。state
is an instantiation of a user-defined class.
注意
このメンバーは、アプリケーションでネットワーク トレースが有効にされている場合にトレース情報を出力します。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.
注意
非同期メソッドに対して、実行コンテキスト (セキュリティコンテキスト、権限を借用したユーザー、および呼び出し元のコンテキスト) がキャッシュされ Socket ます。The execution context (the security context, the impersonated user, and the calling context) is cached for the asynchronous Socket methods. 特定のコンテキスト (特定の非同期メソッド、特定のインスタンス、および特定のコールバック) を初めて使用した後 Socket Socket 、そのコンテキストを使用すると、パフォーマンスが向上します。After the first use of a particular context (a specific asynchronous Socket method, a specific Socket instance, and a specific callback), subsequent uses of that context will see a performance improvement.
こちらもご覧ください
- EndAccept(IAsyncResult)
- AsyncCallback
- Connect(EndPoint)
- BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)
- コールバック メソッドとしてのデリゲートのマーシャ リングMarshaling a Delegate as a Callback Method
- 非同期クライアント ソケットの例Asynchronous Client Socket Example
- 非同期サーバー ソケットの例Asynchronous Server Socket Example