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.