Таймауты при IOCP

Тема в разделе "WASM.NETWORKS", создана пользователем slesh, 28 май 2010.

  1. slesh

    slesh New Member

    Публикаций:
    0
    Регистрация:
    6 фев 2009
    Сообщения:
    214
    Написал модуль обработки запросов клиентов.
    Всё реализовал на портах завершения с перекрытым вводом-выводом.
    Когда клиент коннектится, то добавляю его в порт завершения (CreateIoCompletionPort)
    В рабочих потоках получаю инфу об операциях через GetQueuedCompletionStatus
    В принципе всё пашет отлично за исключеним одного: нет таймаутов.

    Хотелось бы чтобы можно было ставить таймаут на получение данных от клиента.
    setsockopt в данном случае не катит. При этом нигде не написано как такое может быть реализовано.

    Сначало думал создать поток который будет пробегаться по всем описателям клиентов и проверять таймаут и затем посылать PostQueuedCompletionStatus чтобы закрыть данное соединение. Но это противоречит самому принципу IOCP ради которого и начало всё писаться. Да и не удобное это делать в плане списка клиентов. Может есть какойнить другой нормальный способ?