Написал модуль обработки запросов клиентов. Всё реализовал на портах завершения с перекрытым вводом-выводом. Когда клиент коннектится, то добавляю его в порт завершения (CreateIoCompletionPort) В рабочих потоках получаю инфу об операциях через GetQueuedCompletionStatus В принципе всё пашет отлично за исключеним одного: нет таймаутов. Хотелось бы чтобы можно было ставить таймаут на получение данных от клиента. setsockopt в данном случае не катит. При этом нигде не написано как такое может быть реализовано. Сначало думал создать поток который будет пробегаться по всем описателям клиентов и проверять таймаут и затем посылать PostQueuedCompletionStatus чтобы закрыть данное соединение. Но это противоречит самому принципу IOCP ради которого и начало всё писаться. Да и не удобное это делать в плане списка клиентов. Может есть какойнить другой нормальный способ?