отследить закрытие сокета с другой стороны

Тема в разделе "WASM.NETWORKS", создана пользователем VaVa, 21 авг 2018.

  1. VaVa

    VaVa Member

    Публикаций:
    0
    Регистрация:
    21 авг 2018
    Сообщения:
    34
    вот какая история:
    пишу сервер на асинхронных серверах (и и на блокирующих тоже самое) чтобы он принимал входящее подключение и читал с него. Пишу простой клиент который коннектится к серверу и сразу закрывает соединение. По идеи у сервера должно произойти исключение и по нему он закроет сокет. А не тут то было у сервера никаких исключений не происходит он нормально читает из закрытого сокета (правдо только 0 байт)
    Что это такое баг Winды или уязвимость?
     
  2. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.955
    Вайршарком посмотри что шлется, может с клиентской стороны и не рвется ничего. Сервер потупит немного и сам закроет по таймауту.
     
  3. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    VaVa, эта фича протокола TCP.

    Далее 2 пути.
    1. Сервер если не получил в течении минуты от клиента ни одного сообщения убивает соединение. Всё ложится на ваши руки программиста.
    2. Использовать расширение keep-alive.
    http://rsdn.org/article/net/keep_alive.xml
    https://tools.ietf.org/html/rfc1122#page-101