вторник

Клиент-серверные ролевые игры

Продолжаю играть с wiznet w5100. С сервером разобрался, теперь настало время прикинуться клиентом.


В: А как мне узнать что человек сейчас на сайте? ну всмысле онлайн
О: Все просто. Инициализируете сетевой контроллер. Следите за питанием, иначе он может сбоить. Настраиваете IP шлюза, максу подсети и другие необходимые параметры. Открываете сокет в режиме TCP клиента и подключаетесь к DNS серверу. Делаете запрос на сервер чтобы узнать IP нашего сайта. Закрываете сокет и открываете в том-же режиме но теперь подключаетесь к IP который дал вам DNS. Ждете установки соединения. Отправляете GET запрос, указав в качестве URL адрес странички нужного вам человека, относительно сервера (/id31337 например). Чтобы не сочинять GET запрос, его можно украсть у какого-нибудь браузера. Только, боже вас упаси, не указывайте в запросе, что вы поддерживаете сжатие трафика! А то пришлют какой-нибудь gzip, и что с ним потом делать? Затем читаете то, что отдает сервер. Данных может быть больше, чем у вас оперативки, поэтому обрабатывать их придется на лету. Вам предстоит найти в выдаче текст <b class="lvi"></b> Если нашли, делаете что-то типа LED_PORT->ODR |= LED_PIN; Написали? Прошивайте и запускайте.
Светодиодик загорелся? Значит человек онлайн.


Ну а светодиодик можно заменить сервомашинкой:

P.S. Исходников пока не будет. Ибо там стыд, позор и задержки на циклах. Потом выложу это как аппноту по работе с новым сетевым модулем.

6 комментариев:

  1. Еще и конфигурацию вынеси (что надо искать), что бы не перекомпилировать исходники :)

    ОтветитьУдалить
    Ответы
    1. Если на меня не нападет лень, то так и сделаю

      Удалить
  2. У меня такое впечатление, как будто я где-то что-то пропустил.

    ОтветитьУдалить
    Ответы
    1. TIME PARADOX - неотъемлемая часть нашей работы :) Иначе говоря, первая часть будет несколько позже

      Удалить
    2. А еще у меня такое впечатление, что Angel5a ее уже где-то видел...

      Удалить
    3. Я не я, я ничо ему не показывал :)

      Удалить