Конференция "Сети" » Вопрос про ServerSocket и ClientSocket [D7, WinXP]
 
  • civic.qip (25.08.08 07:08) [0]
    Простое приложение, у одного есть компанент ServerSocket1 у другого ClientSocket1.
    Если Клент разрывает соединение так: ClientSocket1.Active:=false;
    То у сервера срабатывает событие OnDisconnect, ВСЕ ЗАМЕЧАТЕЛЬНО!!!

    Но если машина на которой запущен клиент, случайно выключиться, то сервер никак не риагирут!

    В чем же дело? Как отловить серверу то, что клиент отключился?
  • Сергей М. © (25.08.08 09:44) [1]

    > В чем же дело?


    В том что "случайно выключившийся" клиент не может послать серверу FIN-пакет по причине своей скоропостижной смерти.


    > Как отловить серверу то, что клиент отключился?


    Послать что-нибудь клиенту.
    Если клиент мертв, возникнет исключение.
  • DVM © (25.08.08 16:31) [2]

    > Но если машина на которой запущен клиент, случайно выключиться,
    >  то сервер никак не риагирут!

    Сервер должен периодически опрашивать клиентов. Например, посылая им какие либо данные. Если посылка не удалась - клиент мертв. Еще лучше, чтобы клиент отвечал на тестовые посылки сервера, т.е. что-то типа ping-а было.
 
Конференция "Сети" » Вопрос про ServerSocket и ClientSocket [D7, WinXP]
Есть новые Нет новых   [134433   +21][b:0][p:0]