Ответы пользователя по тегу Клиент-сервер
  • TCP: почему при отключении кабеля образуется "черная дыра", то есть какое-то время Write теряет данные, но ошибку не выдает?

    begemot_sun
    @begemot_sun
    Программист в душе.
    В сетевом стеке есть есть буферы на отправку и прием.
    Вы пакет отправили, это не значит что вы ждете подтверждение доставки с другого конца.
    Вы отправляете следующий и следующий пакеты.
    Система копит "такие необходимости подтверждений", и когда от другой стороны они приходят, система удаляет "эту необходимость" из памяти и отправляет дальше.

    Т.о. осуществеляется поточная запись в порт, и также поточное подтвержение доставки.

    Когда что-то пошло не так, подтвержения перестают ходить. Данные которые вы хотите отправить оседают в буфере отправки. В это время система ждет подтвержения от другой стороны.

    Когда вы включаете кабель, буфер отправки - переполнен.
    + система не может отправить другие пакеты, потому что нет подтвержения доставки о предыдущих.
    Т.о. если буфер отправки переполнен - то ваши данные теряются.

    Система никогда не знает, когда вы включили кабель. Она просто может пославть пакет аля пинг, через некоторое время. В линуксе это время в районе 2х часов по-умолчанию. Т.о. неактивный сокет может жить 2 часа и ничего с ним не случится, вы в него будете писать, а происходить ничего не будет.

    P.S. Это не точное моё описание, чисто "описание по понятиям" \m/
    Ответ написан
    Комментировать
  • Реально ли реализовать PHP демона, который будет держать постоянное соединение с websocket-сервером?

    begemot_sun
    @begemot_sun
    Программист в душе.
    Никогда не понимал людей, которые пытаются из PHP сделать больше чем он есть. PHP не предназначен для работы как демон.

    Вы правильно мыслите, что пытаетесь написать прокси-сервер. Но PHP плохой выбор.
    Ответ написан
  • Что такое серверная и клиентская часть?

    begemot_sun
    @begemot_sun
    Программист в душе.
    Любая система в веб состоит из 2х частей.
    1 часть (клиентская) - это фактически та программа, которой вы пользуетесь у себя на компьютере. Например браузер.

    Сам по себе браузер ничего не умеет. Он умеет только отображать информацию полученную откуда либо.

    Соотвественно вводится 2 часть системы - серверная.
    Она как-то взаимодействует с клиентом (браузером, телефоном и т.п) таким образом, чтобы пользователь клиента мог получить какую либо полезную информацию.

    Т.о. клиент отправляет запрос серверу. Сервер его обрабатывает и отдает ответ. Клиент этот ответ отображает.

    Для клиентской части вам надо (в первом приближении): HTML\CSS, JavaScript или создать программу (для андройда, для компьютера и т.п.)

    Для серверной части вам надо (в первом приближении): PHP, веб-сервер (apache, nginx), база данных (MySQL, Postgresql, MongoDB и т.п) или другая программа способная взаимодействовать с клиентом каким либо образом.

    Можно не создавать клиент-серверную архитектуру. Можно сделать обычную программу, и работать с ней.
    Ответ написан
    Комментировать