保留中の非同期接続要求を終了します。
Public Sub EndConnect( _
ByVal asyncResult As IAsyncResult _)
[C#]
public void EndConnect(IAsyncResultasyncResult);
[C++]
public: void EndConnect(IAsyncResult* asyncResult);
[JScript]
public function EndConnect(
asyncResult : IAsyncResult);
パラメータ
- asyncResult
この非同期操作の状態情報およびユーザー定義データを格納する IAsyncResult 。
例外
例外の種類 | 条件 |
---|---|
ArgumentNullException | asyncResult が null 参照 (Visual Basic では Nothing) です。 |
ArgumentException | BeginConnect メソッドへの呼び出しで asyncResult が返されませんでした。 |
InvalidOperationException | EndConnect は、非同期接続のために以前に呼び出されています。 |
SocketException | ソケットへのアクセスを試みているときにエラーが発生しました。詳細については「解説」を参照してください。 |
ObjectDisposedException | Socket は閉じられています。 |
解説
EndConnect は、 BeginConnect メソッドで開始されたリモート ホスト接続の非同期要求を完了するブロッキング メソッドです。
BeginConnect を呼び出す前に、 AsyncCallback デリゲートを実装するコールバック メソッドを作成する必要があります。このコールバック メソッドは個別のスレッドで実行され、 BeginConnect の終了時に呼び出されます。コールバック メソッドは、 BeginConnect メソッドからパラメータとして返された IAsyncResult を受け取る必要があります。
コールバック メソッド内では、 IAsyncResult パラメータの AsyncState メソッドを呼び出して、接続が試行された Socket を取得します。 Socket を取得したら、 EndConnect メソッドを呼び出して接続の試行を正常に完了できます。
メモ SocketException が発生した場合は、 SocketException.ErrorCode を使用して具体的なエラー コードを取得してください。このコードを取得したら、Windows Socket Version 2 API エラー コードのマニュアルから、エラーの詳細情報を確認できます。これは MSDN から入手できます。
使用例
[Visual Basic, C#, C++] 非同期接続の試行を終了する例を次に示します。
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
[C#]
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);
[C++]
allDone->Set();
Socket* s = __try_cast<Socket*>(ar->AsyncState);
s->EndConnect(ar);
StateObject* so2 = new StateObject();
so2->workSocket = s;
Byte buff[] = Encoding::ASCII->GetBytes(S"This is a test");
s->BeginSend(buff, 0, buff->Length, SocketFlags::None,
new AsyncCallback(0, &Async_Send_Receive::Send_Callback), so2);
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard
参照
Socket クラス | Socket メンバ | System.Net.Sockets 名前空間 | 非同期呼び出しの組み込み | BeginConnect | AsyncCallback | AsyncState