Socket.SendAsync(SocketAsyncEventArgs) メソッド

定義

接続されている Socket オブジェクトに、データを非同期に送信します。Sends data asynchronously to a connected Socket object.

public:
 bool SendAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool SendAsync (System.Net.Sockets.SocketAsyncEventArgs e);
member this.SendAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function SendAsync (e As SocketAsyncEventArgs) As Boolean

パラメーター

e
SocketAsyncEventArgs

この非同期ソケット操作に使用する SocketAsyncEventArgs オブジェクト。The SocketAsyncEventArgs object to use for this asynchronous socket operation.

戻り値

Boolean

I/O 操作が保留中の場合は truetrue if the I/O operation is pending. 操作の完了時に、e パラメーターの Completed イベントが発生します。The Completed event on the e parameter will be raised upon completion of the operation.

I/O 操作が同期的に完了した場合は falsefalse if the I/O operation completed synchronously. この場合、e パラメーターの Completed イベントは発生しません。メソッド呼び出しから制御が戻った直後に、パラメーターとして渡された e オブジェクトを調べて操作の結果を取得できます。In this case, The Completed event on the e parameter will not be raised and the e object passed as a parameter may be examined immediately after the method call returns to retrieve the result of the operation.

例外

e パラメーターの Buffer プロパティまたは BufferList プロパティは、有効なバッファーを参照する必要があります。The Buffer or BufferList properties on the e parameter must reference valid buffers. これらのプロパティは、どちらか 1 つを設定できます。一度に両方のプロパティを設定することはできません。One or the other of these properties may be set, but not both at the same time.

e パラメーターに指定された SocketAsyncEventArgs オブジェクトを使用してソケット操作が既に進行していました。A socket operation was already in progress using the SocketAsyncEventArgs object specified in the e parameter.

このメソッドには Windows XP 以降が必要です。Windows XP or later is required for this method.

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

Socket がまだ接続されていないか、Accept()AcceptAsync(SocketAsyncEventArgs)、または BeginAccept の各メソッドによって取得されませんでした。The Socket is not yet connected or was not obtained via an Accept(), AcceptAsync(SocketAsyncEventArgs),or BeginAccept, method.

注釈

SendAsyncメソッドは、接続指向のソケット上の1つ以上のバッファーから送信データを書き込むために使用されます。The SendAsync method is used to write outgoing data from one or more buffers on a connection-oriented socket. ただし、このメソッドは、接続操作でリモートホストを指定したコネクションレスソケットでも使用できます。This method can also be used, however, on connectionless sockets that have specified a remote host on a connect operation.

メソッドは、、、 SendAsync 、、、のいずれかのメソッドで確立されたリモートホストに対して、非同期の送信操作を開始し Accept AcceptAsync BeginAccept BeginConnect Connect ConnectAsync ます。The SendAsync method starts an asynchronous send operation to the remote host established in the Accept, AcceptAsync, BeginAccept, BeginConnect, Connect, or ConnectAsync method.

System.Net.Sockets.SocketAsyncEventArgsこのメソッドを正常に呼び出すには、オブジェクトの次のプロパティとイベントが必要です。The following properties and events on the System.Net.Sockets.SocketAsyncEventArgs object are required to successfully call this method:

呼び出し元は、 SocketAsyncEventArgs.UserToken メソッドを呼び出す前に、プロパティを任意のユーザー状態オブジェクトに設定できます。これにより、 SendAsync コールバックメソッドで情報を取得できるようになります。The caller may set the SocketAsyncEventArgs.UserToken property to any user state object desired before calling the SendAsync method, so that the information will be retrievable in the callback method. コールバックが1つのオブジェクトよりも多くの情報を必要とする場合は、他の必要な状態情報をメンバーとして保持するために、小さなクラスを作成できます。If the callback needs more information than a single object, a small class can be created to hold the other required state information as members.

SendAsync最初に、、、、またはを呼び出さない場合、メソッドは例外をスローし Accept AcceptAsync BeginAccept BeginConnect Connect ConnectAsync ます。The SendAsync method will throw an exception if you do not first call Accept, AcceptAsync, BeginAcceptBeginConnect, Connect, or ConnectAsync.

メソッドを呼び出す SendAsync と、別の実行スレッド内でデータを送信できるようになります。Calling the SendAsync method gives you the ability to send data within a separate execution thread.

メッセージ指向のソケットの場合、基になる Windows sockets service プロバイダーの最大メッセージサイズを超えないようにしてください。For message-oriented sockets, do not exceed the maximum message size of the underlying Windows sockets service provider. データが長すぎて、基になるサービスプロバイダーでアトミックに渡すことができない場合、データは送信されず、メソッドはを SendAsync SocketException SocketAsyncEventArgs.SocketError ネイティブ Winsock WSAEMSGSIZE エラーコード (10040) に設定してをスローします。If the data is too long to pass atomically through the underlying service provider, no data is transmitted and the SendAsync method throws a SocketException with the SocketAsyncEventArgs.SocketError set to the native Winsock WSAEMSGSIZE error code (10040).

メソッドが正常に完了したこと SendAsync は、データが正常に配信されたことを示していないことに注意してください。Note that the successful completion of the SendAsync method does not indicate that the data was successfully delivered.

適用対象

こちらもご覧ください