TCP-соединения с перекрывающимся вводом-выводом

Можно ли инициировать запрос TCP-соединения с перекрывающимся вводом-выводом и отменить его до завершения соединения в Windows? Мне нужно поддерживать как минимум Windows XP SP2.

2 ответа

Решение

ConnectEx позволяет перекрытую попытку подключения.

Чтобы отменить это нужно будет использовать CancelIo прохождение SOCKET как будто это было HANDLE (это правда). Но это должно быть сделано из того же потока, который называется ConnectEx, Управлять вещами, чтобы вы могли достичь этой специфичности потоков, вряд ли будет легко.

После XP/2003 (т.е. Vista/2008/8/2008R2) вы можете использовать CancelIoEx из другого потока (OVERLAPPED экземпляр используется для полной идентификации операции ввода-вывода).

Отсюда:

перекрытие

Этот каталог содержит пример серверной программы, которая использует перекрывающийся ввод-вывод. В примере программы используется функция AcceptEx и перекрывающийся ввод-вывод для эффективной обработки нескольких асинхронных запросов на подключение от клиентов. Сервер использует функцию AcceptEx для мультиплексирования различных клиентских подключений в однопоточном приложении Win32. Использование перекрывающегося ввода-вывода обеспечивает большую масштабируемость.

Другие вопросы по тегам