TCP-соединения с перекрытием ввода-вывода - PullRequest
3 голосов
/ 10 октября 2011

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

Ответы [ 2 ]

6 голосов
/ 10 октября 2011

ConnectEx разрешает попытку соединения с перекрытием.

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

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

0 голосов
/ 10 октября 2011

С здесь :

Перекрытие

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

...