Socket.BeginSend Socket.BeginSend Socket.BeginSend Socket.BeginSend Method

定義

接続されている Socket にデータを非同期的に送信します。Sends data asynchronously to a connected Socket.

オーバーロード

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object) BeginSend(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object) BeginSend(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)

接続されている Socket にデータを非同期的に送信します。Sends data asynchronously to a connected Socket.

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object) BeginSend(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object) BeginSend(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object)

接続されている Socket にデータを非同期的に送信します。Sends data asynchronously to a connected Socket.

BeginSend(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object) BeginSend(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object) BeginSend(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)

接続されている Socket にデータを非同期的に送信します。Sends data asynchronously to a connected Socket.

BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)

接続されている Socket にデータを非同期的に送信します。Sends data asynchronously to a connected Socket.

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object) BeginSend(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object) BeginSend(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)

接続されている Socket にデータを非同期的に送信します。Sends data asynchronously to a connected Socket.

public:
 IAsyncResult ^ BeginSend(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSend (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback callback, object state);
member this.BeginSend : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * AsyncCallback * obj -> IAsyncResult

パラメーター

buffers
IList<ArraySegment<Byte>>

送信するデータを格納する Byte 型の配列。An array of type Byte that contains the data to send.

socketFlags
SocketFlags SocketFlags SocketFlags SocketFlags

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

state
Object Object Object Object

この要求のステータス情報を格納するオブジェクト。An object that contains state information for this request.

戻り値

非同期の送信を参照する IAsyncResultAn IAsyncResult that references the asynchronous send.

例外

buffers が空です。buffers is empty.

ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket. 以下の解説を参照してください。See remarks section below.

注釈

BeginSendメソッドで確立されているリモート ホストへの非同期送信操作を開始、 ConnectBeginConnectAccept、またはBeginAcceptメソッド。The BeginSend method starts an asynchronous send operation to the remote host established in the Connect, BeginConnect, Accept, or BeginAccept method. BeginSend 最初に呼び出すしない場合、例外がスローされますAcceptBeginAcceptConnect、またはBeginConnectします。BeginSend will throw an exception if you do not first call Accept, BeginAccept, Connect, or BeginConnect. 呼び出す、BeginSendメソッドを使用すると、個別の実行スレッド内でデータを送信できます。Calling the BeginSend method gives you the ability to send data within a separate execution thread.

実装するコールバック メソッドを作成することができます、AsyncCallbackを委任し、その名前を渡す、BeginSendメソッド。You can create a callback method that implements the AsyncCallback delegate and pass its name to the BeginSend method. 最低限、stateパラメーターが、接続されているを含む必要がありますまたは既定のSocketの通信に使用されています。To do this, at the very minimum, your state parameter must contain the connected or default Socket being used for communication. コールバックは、詳細を必要とする場合は、小さなクラスまたは構造体を作成することができます、Socketと、その他の必要な情報。If your callback needs more information, you can create a small class or structure to hold the Socket and the other required information. このクラスのインスタンスを渡す、BeginSendメソッドによって、stateパラメーター。Pass an instance of this class to the BeginSend method through the state parameter.

コールバック メソッドを呼び出す必要がある、EndSendメソッド。Your callback method should invoke the EndSend method. アプリケーションを呼び出すとBeginSend、システムを別のスレッドを使用して、指定されたコールバック メソッドを実行して、ブロックされますEndSendまで、Socket要求されたバイト数を送信します。 または、例外をスローします。When your application calls BeginSend, the system will use a separate thread to execute the specified callback method, and will block on EndSend until the Socket sends the number of bytes requested or throws an exception. 元のスレッドを呼び出した後にブロックするかどうか、BeginSendメソッドを使用して、WaitHandle.WaitOneメソッド。If you want the original thread to block after you call the BeginSend method, use the WaitHandle.WaitOne method. 元のスレッドが実行を継続する場合は、コールバック メソッドにはセット メソッドを呼び出します。Call the Set method on a T:System.Threading.ManualResetEvent in the callback method when you want the original thread to continue executing. コールバック メソッドの記述の詳細については、次を参照してください。コールバック メソッドとしてデリゲートのマーシャ リングします。For additional information on writing callback methods see Marshaling a Delegate as a Callback Method.

接続指向のプロトコルでは、意図したものがBeginSend最初に呼び出すことが指定のコネクションレスのプロトコルでも、ConnectまたはBeginConnectメソッドを既定のリモート ホストを確立します。Although intended for connection-oriented protocols, BeginSend also works for connectionless protocols, provided that you first call the Connect or BeginConnect method to establish a default remote host. 使用する必要がありますをいくつかの異なるホストにデータを送信する、コネクションレスのプロトコルとプランを使用する場合BeginSendToします。If you are using a connectionless protocol and plan to send data to several different hosts, you should use BeginSendTo. 使用しても問題がBeginSendToで既定のリモート ホストを確立した後でもConnectします。It is okay to use BeginSendTo even after you have established a default remote host with Connect. 呼び出しの前に、既定のリモート ホストを変更することもできます。BeginSend別呼び出すことによってConnectまたはBeginConnectします。You can also change the default remote host prior to calling BeginSend by making another call to Connect or BeginConnect. コネクションレスのプロトコルを使用している場合は、バッファーのサイズが、基になるサービス プロバイダーの最大パケット サイズを超えていないことを確認する必要もあります。With connectionless protocols, you must also be sure that the size of your buffer does not exceed the maximum packet size of the underlying service provider. 場合は、データグラムが送信されずBeginSendがスローされます、SocketExceptionします。If it does, the datagram will not be sent and BeginSend will throw a SocketException.

指定した場合、DontRouteとしてフラグを設定、socketflagsパラメーター、ルーティングされていないに送信するデータ。If you specify the DontRoute flag as the socketflags parameter, the data you are sending will not be routed.

注意

表示された場合、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.

注意

送信が正常に完了しても、データが正常に配信されたことは示しません。The successful completion of a send does not indicate that the data was successfully delivered. 転送するデータを保持するために、トランスポート システム内で使用可能なバッファー領域がない場合は、送信ソケットが非ブロッキング モードに設定されていない場合にブロックされます。If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

注意

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

こちらもご覧ください

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object) BeginSend(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object) BeginSend(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object)

重要

この API は CLS 準拠ではありません。

接続されている Socket にデータを非同期的に送信します。Sends data asynchronously to a connected Socket.

public:
 IAsyncResult ^ BeginSend(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);
[System.CLSCompliant(false)]
public IAsyncResult BeginSend (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback callback, object state);
member this.BeginSend : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags *  * AsyncCallback * obj -> IAsyncResult

パラメーター

buffers
IList<ArraySegment<Byte>>

送信するデータを格納する Byte 型の配列。An array of type Byte that contains the data to send.

socketFlags
SocketFlags SocketFlags SocketFlags SocketFlags

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

errorCode
SocketError SocketError SocketError SocketError

ソケット エラーを格納する SocketError オブジェクト。A SocketError object that stores the socket error.

state
Object Object Object Object

この要求のステータス情報を格納するオブジェクト。An object that contains state information for this request.

戻り値

非同期の送信を参照する IAsyncResultAn IAsyncResult that references the asynchronous send.

例外

buffers が空です。buffers is empty.

ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket. 以下の解説を参照してください。See remarks section below.

注釈

BeginSendメソッドで確立されているリモート ホストへの非同期送信操作を開始、 ConnectBeginConnectAccept、またはBeginAcceptメソッド。The BeginSend method starts an asynchronous send operation to the remote host established in the Connect, BeginConnect, Accept, or BeginAccept method. BeginSend 最初に呼び出すしない場合、例外がスローされますAcceptBeginAcceptConnect、またはBeginConnectします。BeginSend will throw an exception if you do not first call Accept, BeginAccept, Connect, or BeginConnect. 呼び出す、BeginSendメソッドを使用すると、個別の実行スレッド内でデータを送信できます。Calling the BeginSend method gives you the ability to send data within a separate execution thread.

実装するコールバック メソッドを作成することができます、AsyncCallbackを委任し、その名前を渡す、BeginSendメソッド。You can create a callback method that implements the AsyncCallback delegate and pass its name to the BeginSend method. 最低限、stateパラメーターが、接続されているを含む必要がありますまたは既定のSocketの通信に使用されています。To do this, at the very minimum, your state parameter must contain the connected or default Socket being used for communication. コールバックは、詳細を必要とする場合は、小さなクラスまたは構造体を作成することができます、Socketと、その他の必要な情報。If your callback needs more information, you can create a small class or structure to hold the Socket and the other required information. このクラスのインスタンスを渡す、BeginSendメソッドによって、stateパラメーター。Pass an instance of this class to the BeginSend method through the state parameter.

コールバック メソッドを呼び出す必要がある、EndSendメソッド。Your callback method should invoke the EndSend method. アプリケーションを呼び出すとBeginSend、システムを別のスレッドを使用して、指定されたコールバック メソッドを実行して、ブロックされますEndSendまで、Socket要求されたバイト数を送信します。 または、例外をスローします。When your application calls BeginSend, the system will use a separate thread to execute the specified callback method, and will block on EndSend until the Socket sends the number of bytes requested or throws an exception. 元のスレッドを呼び出した後にブロックするかどうか、BeginSendメソッドを使用して、WaitHandle.WaitOneメソッド。If you want the original thread to block after you call the BeginSend method, use the WaitHandle.WaitOne method. Set メソッドを呼び出し、ManualResetEvent元のスレッドの実行を続行する場合は、コールバック メソッドで。Call the Set method on a ManualResetEvent in the callback method when you want the original thread to continue executing. コールバック メソッドの記述の詳細については、次を参照してください。コールバック メソッドとしてデリゲートのマーシャ リングします。For additional information on writing callback methods see Marshaling a Delegate as a Callback Method.

接続指向のプロトコルでは、意図したものがBeginSend最初に呼び出すことが指定のコネクションレスのプロトコルでも、ConnectまたはBeginConnectメソッドを既定のリモート ホストを確立します。Although intended for connection-oriented protocols, BeginSend also works for connectionless protocols, provided that you first call the Connect or BeginConnect method to establish a default remote host. 使用する必要がありますをいくつかの異なるホストにデータを送信する、コネクションレスのプロトコルとプランを使用する場合BeginSendToします。If you are using a connectionless protocol and plan to send data to several different hosts, you should use BeginSendTo. 使用しても問題がBeginSendToで既定のリモート ホストを確立した後でもConnectします。It is okay to use BeginSendTo even after you have established a default remote host with Connect. 呼び出しの前に、既定のリモート ホストを変更することもできます。BeginSend別呼び出すことによってConnectまたはBeginConnectします。You can also change the default remote host prior to calling BeginSend by making another call to Connect or BeginConnect. コネクションレスのプロトコルを使用している場合は、バッファーのサイズが、基になるサービス プロバイダーの最大パケット サイズを超えていないことを確認する必要もあります。With connectionless protocols, you must also be sure that the size of your buffer does not exceed the maximum packet size of the underlying service provider. 場合は、データグラムが送信されずBeginSendがスローされます、SocketExceptionします。If it does, the datagram will not be sent and BeginSend will throw a SocketException.

指定した場合、DontRouteとしてフラグを設定、socketflagsパラメーター、ルーティングされていないに送信するデータ。If you specify the DontRoute flag as the socketflags parameter, the data you are sending will not be routed.

注意

表示された場合、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.

注意

送信が正常に完了しても、データが正常に配信されたことは示しません。The successful completion of a send does not indicate that the data was successfully delivered. 転送するデータを保持するために、トランスポート システム内で使用可能なバッファー領域がない場合は、送信ソケットが非ブロッキング モードに設定されていない場合にブロックされます。If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

注意

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

こちらもご覧ください

BeginSend(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object) BeginSend(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object) BeginSend(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)

接続されている Socket にデータを非同期的に送信します。Sends data asynchronously to a connected Socket.

public:
 IAsyncResult ^ BeginSend(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 BeginSend (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback callback, object state);
member this.BeginSend : byte[] * int * int * System.Net.Sockets.SocketFlags *  * AsyncCallback * obj -> IAsyncResult

パラメーター

buffer
Byte[]

送信するデータを格納する Byte 型の配列。An array of type Byte that contains the data to send.

offset
Int32 Int32 Int32 Int32

送信を開始する、buffer パラメーター内の、インデックス番号が 0 から始まる位置。The zero-based position in the buffer parameter at which to begin sending data.

size
Int32 Int32 Int32 Int32

送信するバイト数。The number of bytes to send.

socketFlags
SocketFlags SocketFlags SocketFlags SocketFlags

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

errorCode
SocketError SocketError SocketError SocketError

ソケット エラーを格納する SocketError オブジェクト。A SocketError object that stores the socket error.

state
Object Object Object Object

この要求のステータス情報を格納するオブジェクト。An object that contains state information for this request.

戻り値

非同期の送信を参照する IAsyncResultAn IAsyncResult that references the asynchronous send.

例外

ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket. 以下の解説を参照してください。See remarks section below.

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

または-or- offsetbuffer の長さより小さい値です。offset is less 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.

注釈

BeginSendメソッドで確立されているリモート ホストへの非同期送信操作を開始、 ConnectBeginConnectAccept、またはBeginAcceptメソッド。The BeginSend method starts an asynchronous send operation to the remote host established in the Connect, BeginConnect, Accept, or BeginAccept method. BeginSend 最初に呼び出すしない場合、例外がスローされますAcceptBeginAcceptConnect、またはBeginConnectします。BeginSend will throw an exception if you do not first call Accept, BeginAccept, Connect, or BeginConnect. 呼び出す、BeginSendメソッドを使用すると、個別の実行スレッド内でデータを送信できます。Calling the BeginSend method gives you the ability to send data within a separate execution thread.

実装するコールバック メソッドを作成することができます、AsyncCallbackを委任し、その名前を渡す、BeginSendメソッド。You can create a callback method that implements the AsyncCallback delegate and pass its name to the BeginSend method. 最低限、stateパラメーターが、接続されているを含む必要がありますまたは既定のSocketの通信に使用されています。To do this, at the very minimum, your state parameter must contain the connected or default Socket being used for communication. コールバックは、詳細を必要とする場合は、小さなクラスまたは構造体を作成することができます、Socketと、その他の必要な情報。If your callback needs more information, you can create a small class or structure to hold the Socket and the other required information. このクラスのインスタンスを渡す、BeginSendメソッドによって、stateパラメーター。Pass an instance of this class to the BeginSend method through the state parameter.

コールバック メソッドを呼び出す必要がある、EndSendメソッド。Your callback method should invoke the EndSend method. アプリケーションを呼び出すとBeginSend、システムを別のスレッドを使用して、指定されたコールバック メソッドを実行して、ブロックされますEndSendまで、Socket要求されたバイト数を送信します。 または、例外をスローします。When your application calls BeginSend, the system will use a separate thread to execute the specified callback method, and will block on EndSend until the Socket sends the number of bytes requested or throws an exception. 元のスレッドを呼び出した後にブロックするかどうか、BeginSendメソッドを使用して、WaitHandle.WaitOneメソッド。If you want the original thread to block after you call the BeginSend method, use the WaitHandle.WaitOne method. 元のスレッドが実行を継続する場合は、コールバック メソッドにはセット メソッドを呼び出します。Call the Set method on a T:System.Threading.ManualResetEvent in the callback method when you want the original thread to continue executing. コールバック メソッドの記述の詳細については、次を参照してください。コールバック メソッドとしてデリゲートのマーシャ リングします。For additional information on writing callback methods see Marshaling a Delegate as a Callback Method.

接続指向のプロトコルでは、意図したものがBeginSend最初に呼び出すことが指定のコネクションレスのプロトコルでも、ConnectまたはBeginConnectメソッドを既定のリモート ホストを確立します。Although intended for connection-oriented protocols, BeginSend also works for connectionless protocols, provided that you first call the Connect or BeginConnect method to establish a default remote host. 使用する必要がありますをいくつかの異なるホストにデータを送信する、コネクションレスのプロトコルとプランを使用する場合BeginSendToします。If you are using a connectionless protocol and plan to send data to several different hosts, you should use BeginSendTo. 使用しても問題がBeginSendToで既定のリモート ホストを確立した後でもConnectします。It is okay to use BeginSendTo even after you have established a default remote host with Connect. 呼び出しの前に、既定のリモート ホストを変更することもできます。BeginSend別呼び出すことによってConnectまたはBeginConnectします。You can also change the default remote host prior to calling BeginSend by making another call to Connect or BeginConnect. コネクションレスのプロトコルを使用している場合は、バッファーのサイズが、基になるサービス プロバイダーの最大パケット サイズを超えていないことを確認する必要もあります。With connectionless protocols, you must also be sure that the size of your buffer does not exceed the maximum packet size of the underlying service provider. 場合は、データグラムが送信されずBeginSendがスローされます、SocketExceptionします。If it does, the datagram will not be sent and BeginSend will throw a SocketException.

指定した場合、DontRouteとしてフラグを設定、socketflagsパラメーター、ルーティングされていないに送信するデータ。If you specify the DontRoute flag as the socketflags parameter, the data you are sending will not be routed.

注意

表示された場合、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.

注意

送信が正常に完了しても、データが正常に配信されたことは示しません。The successful completion of a send does not indicate that the data was successfully delivered. 転送するデータを保持するために、トランスポート システム内で使用可能なバッファー領域がない場合は、送信ソケットが非ブロッキング モードに設定されていない場合にブロックされます。If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

注意

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

こちらもご覧ください

BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object) BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)

接続されている Socket にデータを非同期的に送信します。Sends data asynchronously to a connected Socket.

public:
 IAsyncResult ^ BeginSend(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socket_flags, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSend (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socket_flags, AsyncCallback callback, object state);
member this.BeginSend : byte[] * int * int * System.Net.Sockets.SocketFlags * AsyncCallback * obj -> IAsyncResult
Public Function BeginSend (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 contains the data to send.

offset
Int32 Int32 Int32 Int32

送信を開始する、buffer パラメーター内の、インデックス番号が 0 から始まる位置。The zero-based position in the buffer parameter at which to begin sending data.

size
Int32 Int32 Int32 Int32

送信するバイト数。The number of bytes to send.

socketFlags
SocketFlags SocketFlags SocketFlags SocketFlags

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

state
Object Object Object Object

この要求のステータス情報を格納するオブジェクト。An object that contains state information for this request.

戻り値

非同期の送信を参照する IAsyncResultAn IAsyncResult that references the asynchronous send.

例外

ソケットへのアクセスを試行しているときにエラーが発生しました。An error occurred when attempting to access the socket. 以下の解説を参照してください。See remarks section below.

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

または-or- offsetbuffer の長さより小さい値です。offset is less 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.

次のコード例では、リモート ホストへのデータを非同期的に送信を開始します。The following code example begins asynchronously sending data to a remote host.

allDone->Set();
Socket^ s = safe_cast<Socket^>(ar->AsyncState);
s->EndConnect( ar );
StateObject^ so2 = gcnew StateObject;
so2->workSocket = s;
array<Byte>^ buff = Encoding::ASCII->GetBytes( "This is a test" );
s->BeginSend( buff, 0, buff->Length, SocketFlags::None,
   gcnew AsyncCallback( &Async_Send_Receive::Send_Callback ), so2 );
allDone.Set();
Socket s = (Socket) ar.AsyncState;
s.EndConnect(ar);
StateObject so2 = new StateObject();
so2.workSocket = s;
byte[] buff = Encoding.ASCII.GetBytes("This is a test");
s.BeginSend(buff, 0, buff.Length,0,
                   new AsyncCallback(Async_Send_Receive.Send_Callback), so2);    
Public Shared Sub Connect_Callback(ar As IAsyncResult)
   

   allDone.Set()
   Dim s As Socket = CType(ar.AsyncState, Socket)
   s.EndConnect(ar)
   Dim so2 As New StateObject()
   so2.workSocket = s
   Dim buff As Byte() = Encoding.ASCII.GetBytes("This is a test")
   s.BeginSend(buff, 0, buff.Length, 0, New AsyncCallback(AddressOf Async_Send_Receive.Send_Callback), so2)
End Sub 'Connect_Callback

注釈

BeginSendメソッドで確立されているリモート ホストへの非同期送信操作を開始、 ConnectBeginConnectAccept、またはBeginAcceptメソッド。The BeginSend method starts an asynchronous send operation to the remote host established in the Connect, BeginConnect, Accept, or BeginAccept method. BeginSend 最初に呼び出すしない場合、例外がスローされますAcceptBeginAcceptConnect、またはBeginConnectします。BeginSend will throw an exception if you do not first call Accept, BeginAccept, Connect, or BeginConnect. 呼び出す、BeginSendメソッドを使用すると、個別の実行スレッド内でデータを送信できます。Calling the BeginSend method gives you the ability to send data within a separate execution thread.

実装するコールバック メソッドを作成することができます、AsyncCallbackを委任し、その名前を渡す、BeginSendメソッド。You can create a callback method that implements the AsyncCallback delegate and pass its name to the BeginSend method. 最低限、stateパラメーターが、接続されているを含む必要がありますまたは既定のSocketの通信に使用されています。To do this, at the very minimum, your state parameter must contain the connected or default Socket being used for communication. コールバックは、詳細を必要とする場合は、小さなクラスまたは構造体を作成することができます、Socketと、その他の必要な情報。If your callback needs more information, you can create a small class or structure to hold the Socket and the other required information. このクラスのインスタンスを渡す、BeginSendメソッドによって、stateパラメーター。Pass an instance of this class to the BeginSend method through the state parameter.

コールバック メソッドを呼び出す必要がある、EndSendメソッド。Your callback method should invoke the EndSend method. アプリケーションを呼び出すとBeginSend、システムを別のスレッドを使用して、指定されたコールバック メソッドを実行して、ブロックされますEndSendまで、Socket要求されたバイト数を送信します。 または、例外をスローします。When your application calls BeginSend, the system will use a separate thread to execute the specified callback method, and will block on EndSend until the Socket sends the number of bytes requested or throws an exception. 元のスレッドを呼び出した後にブロックするかどうか、BeginSendメソッドを使用して、WaitHandle.WaitOneメソッド。If you want the original thread to block after you call the BeginSend method, use the WaitHandle.WaitOne method. 元のスレッドが実行を継続する場合は、コールバック メソッドにはセット メソッドを呼び出します。Call the Set method on a T:System.Threading.ManualResetEvent in the callback method when you want the original thread to continue executing. コールバック メソッドの記述の詳細については、次を参照してください。コールバック メソッドとしてデリゲートのマーシャ リングします。For additional information on writing callback methods see Marshaling a Delegate as a Callback Method.

接続指向のプロトコルでは、意図したものがBeginSend最初に呼び出すことが指定のコネクションレスのプロトコルでも、ConnectまたはBeginConnectメソッドを既定のリモート ホストを確立します。Although intended for connection-oriented protocols, BeginSend also works for connectionless protocols, provided that you first call the Connect or BeginConnect method to establish a default remote host. 使用する必要がありますをいくつかの異なるホストにデータを送信する、コネクションレスのプロトコルとプランを使用する場合BeginSendToします。If you are using a connectionless protocol and plan to send data to several different hosts, you should use BeginSendTo. 使用しても問題がBeginSendToで既定のリモート ホストを確立した後でもConnectします。It is okay to use BeginSendTo even after you have established a default remote host with Connect. 呼び出しの前に、既定のリモート ホストを変更することもできます。BeginSend別呼び出すことによってConnectまたはBeginConnectします。You can also change the default remote host prior to calling BeginSend by making another call to Connect or BeginConnect. コネクションレスのプロトコルを使用している場合は、バッファーのサイズが、基になるサービス プロバイダーの最大パケット サイズを超えていないことを確認する必要もあります。With connectionless protocols, you must also be sure that the size of your buffer does not exceed the maximum packet size of the underlying service provider. 場合は、データグラムが送信されずBeginSendがスローされます、SocketExceptionします。If it does, the datagram will not be sent and BeginSend will throw a SocketException.

指定した場合、DontRouteとしてフラグを設定、socketflagsパラメーター、ルーティングされていないに送信するデータ。If you specify the DontRoute flag as the socketflags parameter, the data you are sending will not be routed.

注意

表示された場合、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.

注意

送信が正常に完了しても、データが正常に配信されたことは示しません。The successful completion of a send does not indicate that the data was successfully delivered. 転送するデータを保持するために、トランスポート システム内で使用可能なバッファー領域がない場合は、送信ソケットが非ブロッキング モードに設定されていない場合にブロックされます。If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

注意

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

こちらもご覧ください

適用対象