Socket.SendAsync(SocketAsyncEventArgs) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
接続された Socket オブジェクトに非同期的にデータを送信します。
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
パラメーター
この非同期ソケット操作に使用する SocketAsyncEventArgs オブジェクト。
返品
true I/O 操作が保留中の場合は 。
Completed パラメーターのe イベントは、操作の完了時に発生します。
false I/O 操作が同期的に完了した場合は > この場合、Completed パラメーターの e イベントは発生せず、メソッド呼び出しが戻った直後にパラメーターとして渡されたe オブジェクトを調べて、操作の結果を取得できます。
例外
Buffer パラメーターのBufferListまたはeプロパティは、有効なバッファーを参照する必要があります。 これらのプロパティのいずれかまたは他のプロパティを同時に設定できますが、両方を同時に設定することはできません。
SocketAsyncEventArgs パラメーターで指定されたe オブジェクトを使用して、ソケット操作が既に進行中でした。
Socketが閉じられました。
Socketはまだ接続されていないか、Accept()、AcceptAsync(SocketAsyncEventArgs)、またはBeginAcceptメソッドを介して取得されていません。
注釈
SendAsync メソッドは、接続指向ソケット上の 1 つ以上のバッファーから送信データを書き込むのに使用されます。 ただし、このメソッドは、接続操作でリモート ホストを指定したコネクションレス ソケットでも使用できます。
SendAsync メソッドは、Accept、AcceptAsync、BeginAccept、BeginConnect、Connect、または ConnectAsync メソッドで確立されたリモート ホストへの非同期送信操作を開始します。
このメソッドを正常に呼び出すには、 System.Net.Sockets.SocketAsyncEventArgs オブジェクトの次のプロパティとイベントが必要です。
SocketAsyncEventArgs.Buffer または SocketAsyncEventArgs.BufferList
SocketAsyncEventArgs.Count SocketAsyncEventArgs.Bufferが設定されている場合
SocketAsyncEventArgs.Offset SocketAsyncEventArgs.Bufferが設定されている場合
呼び出し元は、コールバック メソッドで情報を取得できるように、SocketAsyncEventArgs.UserToken メソッドを呼び出す前に必要な任意のユーザー状態オブジェクトにSendAsync プロパティを設定できます。 コールバックに 1 つのオブジェクトよりも多くの情報が必要な場合は、他の必要な状態情報をメンバーとして保持する小さなクラスを作成できます。
最初にSendAsync、Accept、AcceptAsyncBeginAccept、BeginConnect、またはConnectを呼び出さない場合、ConnectAsync メソッドは例外をスローします。
SendAsync メソッドを呼び出すと、別の実行スレッド内でデータを送信できます。
メッセージ指向ソケットの場合は、基になる Windows ソケット サービス プロバイダーの最大メッセージ サイズを超えないようにします。 データが長すぎて基になるサービス プロバイダーをアトミックに通過できない場合、データは送信されません。SendAsync メソッドは、ネイティブ Winsock WSAEMSGSIZE エラー コード (10040) にSocketExceptionが設定されたSocketAsyncEventArgs.SocketErrorをスローします。
SendAsync メソッドが正常に完了しても、データが正常に配信されたことは示されないことに注意してください。