За последние 24 часа нас посетили 44836 программистов и 1807 роботов. Сейчас ищут 1026 программистов ...

разрыв сокет соединения

Тема в разделе "Прочие вопросы по PHP", создана пользователем kelod, 5 май 2011.

  1. kelod

    kelod Активный пользователь

    С нами с:
    26 апр 2011
    Сообщения:
    32
    Симпатии:
    0
    проблема такая, существует сокетное соединение клиент-сервер, клиент шлёт серверу пакеты сервер их обрабатывает, всё вроде бы нормально работает, но возникает проблема при отключении клиента, каким образом можно узнать что клиент отключился, желательно не используя опросы??
     
  2. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    1. клиент может отправлять сообщение серверу "это последнее, закрывай соединение".
    2. сервер может отключать клиентов по таймауту.
     
  3. kelod

    kelod Активный пользователь

    С нами с:
    26 апр 2011
    Сообщения:
    32
    Симпатии:
    0
    эти два подхода понятны, но я спрашивал не совсем об этом.
    если происходит какая то ошибка связи, падение интернета у клиента и т.п. передаётся ли в секет какое нибудь событие или всё равно нужно опрашивать клиентов и ждать ответа??
     
  4. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    у socket_select() есть параметр для работы с сокетами, у которых были "исключения". но я с ним не работал. можете попробовать и написать)
     
  5. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Не, исключения для других целей.
    Все очень просто - вам сообщили, что можете читать из этого сокета, но чтение возвращает false? Значит клиент отвалился.