Socket.EndConnect(IAsyncResult) Метод

Определение

Завершает ожидающий асинхронный запрос на подключение.

public:
 void EndConnect(IAsyncResult ^ asyncResult);
public:
 void EndConnect(IAsyncResult ^ result);
public void EndConnect (IAsyncResult asyncResult);
public void EndConnect (IAsyncResult result);
member this.EndConnect : IAsyncResult -> unit
member this.EndConnect : IAsyncResult -> unit
Public Sub EndConnect (asyncResult As IAsyncResult)
Public Sub EndConnect (result As IAsyncResult)

Параметры

asyncResultresult
IAsyncResult

Объект IAsyncResult, в котором хранятся сведения о состоянии и любые данные, определенные пользователем, для этой асинхронной операции.

Исключения

asyncResult имеет значение null.

Параметр asyncResult не был возвращен вызовом метода BeginConnect(EndPoint, AsyncCallback, Object).

Метод EndConnect(IAsyncResult) был ранее вызван для асинхронного подключения.

Произошла ошибка при попытке доступа к сокету.

Socket был закрыт.

Примеры

В следующем примере кода завершается асинхронная попытки подключения. Полный пример, демонстрирующий асинхронную связь с сокетами, см. в статье примеры кода для сокетов.

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

Комментарии

EndConnect — Это блокирующий метод, который завершает асинхронный запрос на подключение к удаленному узлу, запущенный в BeginConnect методе.

Перед вызовом необходимо BeginConnect создать метод обратного вызова, который реализует AsyncCallback делегат. Этот метод обратного вызова выполняется в отдельном потоке и вызывается системой после BeginConnect возврата. Метод обратного вызова должен принять значение, IAsyncResult возвращенное BeginConnect методом в качестве параметра.

В методе обратного вызова вызовите AsyncState метод IAsyncResult параметра, чтобы получить объект, для Socket которого выполняется попытка подключения. После получения Socket можно вызвать EndConnect метод для успешного завершения попытки подключения.

Примечание

Если вы получаете SocketException , используйте SocketException.ErrorCode свойство для получения конкретного кода ошибки. после получения этого кода ознакомьтесь с подробным описанием ошибки в документации по коду ошибки API Windows sockets версии 2 .

Примечание

Данный член генерирует сведения трассировки, если в приложении включена трассировка сети. дополнительные сведения см. в разделе сетевая трассировка в платформа .NET Framework.

Применяется к

См. также раздел