Всем доброго дня! Если мне нужно было бы использовать модель ввода/вывода, основанную на сообщениях окна (WSAAsyncSelect()), либо же на событиях (WSAWaitForMultipleEvents()), то мне бы пришлось переводить сокет в асинхронный режим через setsockopt(), либо сразу создавать сокет через WSASocket() с параметром WSA_FLAG_OVERLAPPED. После этого я мог бы вызвать connect() и проверить результат. Если код ошибки WSAEWOULDBLOCK, то жду когда придёт сообщение в окно, или же возникнет событие (всё зависит от выбранной модели ввода/вывода). А вот если я использую модель ввода/вывода, основанную на портах завершения ввода/вывода, тогда как мне использовать функцию connect()? По идее в порт завершения ввода/вывода она ничего не должна записывать, так как в ней нет параметра с указателем на WSAOVERLAPPED. Следовательно функция всегда будет блокируемой и никогда не вернёт WSAEWOULDBLOCK?
При удачном завершении ф-ции connect сокет станет доступным для записи. Думаю, что нужно изыскать возможность узнать об этом. На линуксах это раелизуется имменно так (epoll и пр.).