82. P2P Part2. Установка соединения. Практика

P2P – Серия статей посвященных работе с P2P .
Посмотреть все статьи: http://flashpress.ru/blog/category/p2p/
Серия вводных статей на тему p2p:
  1. P2P Part1. Обзор технологии. Теория
  2. P2P Part2. Установка соединения. Практика
  3. P2P Part3. Видео-связь используя web-камеру

Серии статей на тему проектирования и создания p2p-приложений:

  1. Проектирования и создания текстового p2p-чата (2 урока)
  2. Проектирования и создания p2p чат-рулетки (скоро) хочу
  3. Проектирования и создания групповой p2p-рисовалки (скоро) хочу
  4. Проектирования и создания p2p-файлообменника (скоро) хочу
  5. Проектирования и создания сетевой p2p-игры без сервера (скоро) хочу

В статье P2P Part1. Обзор технологии. Теория я рассказывал теорию создания p2p сетей с помощью языка ActionScript. Давайте попробуем на практике создать нашу первую p2p сеть. В этой сети, каждая подключившаяся флешка отправляет всем участникам свое имя. Флешка, получившая приветствие от другого участника, отображает сообщение в текстовом поле.

Если вы читали предыдущую статью, то вы помните что для создания p2p сети, флешка использует сервер Adobe. Этот сервер необходим только для координации флешек, т.е. для того что бы установить связь между флешками. Напоминаю что трафик проходит между флешками напрямую, т.е. ваши данные на сервер Adobe не попадают. Так вот для того что бы сервер Adobe смог установить связь между флешками только вашего приложения, и что бы флешки разработанные другими разработчиками не могли подключиться к вашей сети, вам необходимо получить уникальный ключ разработчика Adobe.

Получение ключа разработчика Adobe

Пройдите по адресу http://labs.adobe.com/technologies/cirrus/. В правом верхнем углу нажмите на кнопку Developer Key Registration. Вам будет предложено пройти регистрацию или авторизацию на сайте Adobe. После авторизации, подтвердите лицензионное соглашение нажав на кнопку I Agree, и вам будет выдан ваш персональный ключ разработчика Adobe, сохраните его где нибудь.

Не забывайте что флешку можно декомпилировать и получить ваш уникальный ключ. Если вы хотите максимально защитить трафик вашей p2p сети, необходимо использовать методы шифрования. Тема шифрования данных выходит за рамки данной статьи.

После того как вы получили уникальный ключ, можно приступить к написанию кода.

Создаем p2p-приложение

FlashBuilderFlashIDE
Код для редактора Adobe FlashBuilder
При использовании этого кода, не забудьте подключить библиотеку fl.swc.
Не забудьте вставить свой ключ разработчика в строке 22

Код для редактора Adobe Flash CS Professional
При использовании этого кода, не забудьте добавить на stage компоненты TextInut с именем input, Button с именем button и List с именем connectedList. Так же не забудь вставить свой ключ разработчика в строке 4

Вот такая вот флешка должна у вас получиться:

Здесь должна быть флешка. Установите Flash Player


Остановимся на наиболее интересных местах этого кода более подробно. В этом коде, мы создали два объекта (NetConnection и NetGroup) которые слушают событие NetStatusEvent.NET_STATUS. В каждом обработчике события, мы определяем тип события по значению свойства event.info.code, этот параметр может имет много различных значений. Ознакомиться с полным списком можно в официальной документации Adobe.


В строке 127 мы создаем объект класса GroupSpecifier. В этом примере я передал в конструкторе этого класса строку “flashpress.ru”, на самом деле в этом параметре можно передавать любую строку. Эта строка служит для создания разных p2p-сетей. Например если вы будете делать чат, вы можете задать в этом параметр имя каждой отдельной комнаты переписки, что бы пользователи из одной комнаты чата не видели сообщений из другой. Не забывайте, что для идентификации p2p-сети(комнаты) используется еще и ваш ключ разработчика, т.е. если вы и другой flash-программист создадите комнаты с одинаковыми именами, то ваши флешки не будут видеть друг-друга, т.к. вы используете разные ключи разработчика


Не забывайте что одинаковые запросы кешируются!

В строке 192, мы создаем переменную anticash, которая равна случайному числу. Попробую рассказать для чего оно нужно. Представьте себе ситуацию что вы зашли в p2p сеть, в которой уже есть другие участники. Ваша флешка отправляет всем участникам сообщение в котором два параметра: id и name. После этого к сети подключился новый участник, и ваша флешка опять отправляет в p2p-сеть сообщение в котором все теже два параметр id и name. Т.к. сообщение не изменилось, то объект NetGroup не отправит ваше сообщение, оно будет закешировано. Что бы этого не происходило, передавайте в каждом сообщении уникальное значение.


Ссылки:


Что делать дальше? Читайте серию уроков на тему проектирования и создания полноценного p2p чата
Серия вводных статей на тему p2p:
  1. P2P Part1. Обзор технологии. Теория
  2. P2P Part2. Установка соединения. Практика
  3. P2P Part3. Видео-связь используя web-камеру

Серии статей на тему проектирования и создания p2p-приложений:

  1. Проектирования и создания текстового p2p-чата (2 урока)
  2. Проектирования и создания p2p чат-рулетки (скоро) хочу
  3. Проектирования и создания групповой p2p-рисовалки (скоро) хочу
  4. Проектирования и создания p2p-файлообменника (скоро) хочу
  5. Проектирования и создания сетевой p2p-игры без сервера (скоро) хочу
P2P – Серия статей посвященных работе с P2P .
Посмотреть все статьи: http://flashpress.ru/blog/category/p2p/

Да прeбудет с вами Flash.
Serious Sam
Эту статью прочитали 3979 раз

Возникли вопросы по статье? Не стесняйтесь спрашивать в комментариях или любым другим способом на странице Контакты .

Присоединяйтесь к нам в социальных сетях: ВКонтакте , Twitter и Facebook
Понравилась статья? Буду благодарен если вы поделитесь ссылкой с друзьями:


Комментарии ВКонтакте:




Комментарии Facebook:




Комментарии WordPress:


      1. Дмитрий

        А как она работает? Я все сделал, выскакивает после нажатия кнопки connect мое введенное имя и все. Поясните пожалуйста

  1. Уведомление: Проектирование архитектуры p2p-чата на языке ActionScript 3.0 | FlashPress.ru - ActionScript 3.0 и Adobe Flash

  2. Уведомление: P2P. Обзор технологии. Теория | FlashPress.ru

  3. Уведомление: P2P Видео-связь используя web-камеру | FlashPress.ru - ActionScript 3.0 и Adobe Flash

  4. Жека

    Отличная статья, всё довольно подробно расписано. Вопрос: можно ли установить p2p сеть между двумя swf, которые запущены локально на двух разных компах? Та же самая проблема возникает если запустить два swf на одном компе.

    1. Serious Sam Автор записи

      Спасибо за оценку) Установить p2p связь между двумя флешками в локальной сети и в одном компьютере можно при условии что внутри используемой wifi сети не заблокирован UDP-трафик администратором этой сети.

      1. Жека

        Cпасибо за ответ… Правда причина оказалась банальнее – запрет флешплеера на доступ к локальным данным компьютера.