WSAAsyncSelect и CloseSocket

Тема в разделе "WASM.NETWORKS", создана пользователем SnugForce, 2 май 2005.

  1. SnugForce

    SnugForce New Member

    Публикаций:
    0
    Написал сервер на не блок сокетах TCP. Использую WSAAsyncSelect. Но вот проблемка есть. Если клиент не вызывает shutdown, а сразу CloseSocket, то сервер не отлавливает закрытие сокета и клиент как бы есть. Из-за чего и возникает море ошибок. Фактически сервер работает как пизанская башня.
     
  2. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Надо FD_CLOSE ловить.
     
  3. SnugForce

    SnugForce New Member

    Публикаций:
    0
    Забыл уточнить. Я на Дельфи пишу. Вот в этом-то и проблема, что сокет в FD_CLOSE не попадает....
     
  4. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    SnugForce

    В маску параметра event функции WSAAsyncSelect нужно добавить этот FD_CLOSE, а потом ловить. 100% работает.
     
  5. Avalonec

    Avalonec New Member

    Публикаций:
    0
    FD_CLOSE не попадает....

    Что, как обычно, в дельфи сделали все наоборот? :)
     
  6. SnugForce

    SnugForce New Member

    Публикаций:
    0
    Может не правильно выразился...

    Если клиент не вызывает shutdown, а сразу closeSocket, то сообщения FD_CLOSE НЕТ.

    Если клиент вызывает shutdown, а потом closeSocket, то все нормально попадает FD_CLOSE.