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) был ранее вызван для асинхронного подключения.

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

-или-

Только для .NET 7 и более поздних версий Socket : объект закрыт.

только платформа .NET Framework, .NET Core и .NET 5–6: 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

Комментарии

Важно!

Это API совместимости. Мы не рекомендуем использовать методы APM (Begin* и End*) для новой разработки. Вместо этого используйте эквиваленты на Taskоснове .

EndConnectзавершает операцию, запущенную .BeginConnect Необходимо передать объект , IAsyncResult созданный соответствующим BeginConnect вызовом. EndConnect блокирует вызывающий поток до завершения операции.

Примечание

Если вы получаете SocketException, используйте SocketException.ErrorCode свойство , чтобы получить конкретный код ошибки.

Примечание

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

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

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