Socket.EndConnect 方法

结束挂起的异步连接请求。

**命名空间:**System.Net.Sockets
**程序集:**System(在 system.dll 中)

语法

声明
Public Sub EndConnect ( _
    asyncResult As IAsyncResult _
)
用法
Dim instance As Socket
Dim asyncResult As IAsyncResult

instance.EndConnect(asyncResult)
public void EndConnect (
    IAsyncResult asyncResult
)
public:
void EndConnect (
    IAsyncResult^ asyncResult
)
public void EndConnect (
    IAsyncResult asyncResult
)
public function EndConnect (
    asyncResult : IAsyncResult
)

参数

  • asyncResult
    IAsyncResult,它存储此异步操作的状态信息以及所有用户定义数据。

异常

异常类型 条件

ArgumentNullException

asyncResult 为 空引用(在 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 属性获取特定的错误代码。获取此代码后,您可以参考 MSDN Library 中的 Windows Sockets 第 2 版 API 错误代码文档,获取有关该错误的详细说明。

提示

当在应用程序中启用网络跟踪功能后,此成员将输出跟踪信息。有关更多信息,请参见 网络跟踪

示例

下面的代码示例结束异步连接尝试。有关演示与套接字异步通信的完整示例,请参见 套接字代码示例

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
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);    
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.get_AsyncState();
s.EndConnect(ar);
StateObject so2 = new StateObject();
so2.workSocket = s;
ubyte buff[] = Encoding.get_ASCII().GetBytes("This is a test");
s.BeginSend(buff, 0, buff.length, (SocketFlags)0,
    new AsyncCallback(Async_Send_Receive.Send_Callback), so2);

平台

Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

.NET Compact Framework

受以下版本支持:2.0、1.0

请参见

参考

Socket 类
Socket 成员
System.Net.Sockets 命名空间
BeginConnect
AsyncCallback
AsyncState