Четверг, 28 Марта 2024, 21:03

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум игроделов » Движки для разработки игр и сложные системы разработки » Движки для браузерных игр » Серия уроков по созданию сокет клиента/сервера. (Серия уроков по созданию сокет клиента/сервера.)
Серия уроков по созданию сокет клиента/сервера.
anton-garДата: Пятница, 24 Февраля 2012, 22:46 | Сообщение # 1
WEBmaster
Сейчас нет на сайте
Серия уроков по созданию сокет клиента/сервера.
Специально для пользователей Gcup.ru .


В первых трёх уроках, по многочисленным просьбам форумчан, мы рассмотрим создание сокет клиента/сервера на packal, as 3.0, php. Уроки – НЕ ДЛЯ НАЧИНАЮЩИХ, почитайте сначала книги по данным языкам программированиям, ознакомьтесь с общим функционалом.

Оглавление:
• Введение, общее понятие.
• Урок первый – Написание простейшего «echo-(эхо)» сокет клиента/сервера на php.
• Урок второй – Оттачивание навыков, написание простейшего сокет сервера на php и клиента на pascal/as 3.0.
• Урок третий - Написание простейшей игры «The movement of the squares» - «Передвижение квадратов», заключение и выводы.

Вспомогательные материалы:
Справочник по сокетам на as 3.0
Справочник по сокетам на php

Что нам потребуется:

Любой локальный хостинг – Xampp, Denwer, Open Server, Appserv, Nginx.
PSPad – программа для написания php скриптов можно и другие.
Компилятор для pascal – любой.
Компилятор для as 3.0 – любой, я использую adobe flash cs5.

Введение:


Сокеты (англ. socket — углубление, гнездо, разъём) — название программного интерфейса для обеспечения обмена данными между процессами. Процессы при таком обмене могут исполняться как на одной ЭВМ, так и на различных ЭВМ, связанных между собой сетью. Сокет — абстрактный объект, представляющий конечную точку соединения.
Следует различать клиентские и серверные сокеты. Клиентские сокеты грубо можно сравнить с оконечными аппаратами телефонной сети, а серверные — с коммутаторами. Клиентское приложение (например, браузер) использует только клиентские сокеты, а серверное (например, веб-сервер, которому браузер посылает запросы) — как клиентские, так и серверные сокеты.
Интерфейс сокетов впервые появился в BSD Unix. Программный интерфейс сокетов описан в стандарте POSIX.1 и в той или иной мере поддерживается всеми современными операционными системами.
Принципы сокетов: каждый процесс может создать слушающий сокет (серверный сокет) и привязать его к какому-нибудь порту операционной системы (в UNIX непривилегированные процессы не могут использовать порты меньше 1024). Слушающий процесс обычно находится в цикле ожидания, то есть просыпается при появлении нового соединения. При этом сохраняется возможность проверить наличие соединений на данный момент, установить тайм-аут для операции и т.д. Каждый сокет имеет свой адрес. ОС семейства UNIX могут поддерживать много типов адресов, но обязательными являются INET-адрес и UNIX-адрес. Если привязать сокет к UNIX-адресу, то будет создан специальный файл (файл сокета) по заданному пути, через который смогут сообщаться любые локальные процессы путём чтения/записи из него (см. Доменный сокет Unix). Сокеты типа INET доступны из сети и требуют выделения номера порта.
Обычно клиент явно подсоединяется к слушателю, после чего любое чтение или запись через его файловый дескриптор будут передавать данные между ним и сервером.

Порт (TCP/IP) - В протоколах TCP и UDP (семейства TCP/IP) порт — идентифицируемый номером системный ресурс, выделяемый приложению, выполняемому на некотором сетевом хосте, для связи с приложениями, выполняемыми на других сетевых хостах (в том числе c другими приложениями на этом же хосте). По сути, порт - адресуемый участок оперативной памяти устройства, предназначенный для сетевого взаимодействия.
Для каждого из протоколов TCP и UDP стандарт определяет возможность одновременного выделения на хосте до 65536 уникальных портов, идентифицирующихся номерами от 0[1] до 65535. При передаче по сети номер порта в заголовке пакета используется (вместе с IP-адресом хоста) для адресации конкретного приложения (и конкретного, принадлежащего ему, сетевого соединения).
В обычной клиент-серверной модели приложение либо ожидает входящие данные (или запроса на соединение; «слушает порт»; роль сервера), либо посылает данные (или запрос на соединение) на известный порт, открытый приложением-сервером (роль клиента).
По умолчанию приложению выдается порт с произвольным (например, ближайшим свободным, большим 1023) номером. При необходимости приложение может запросить конкретный (предопределённый) номер порта. Так, веб-серверы обычно открывают для ожидания соединения предопределённый порт 80 протокола TCP.

Состояния порта


Состояние Описание
open программа-сервер готова принимать подключения

listen
filtred файрвол или иная причина не позволяет nmap'у определить открыт или зарыт порт
closed

Номера портов - Порты TCP не пересекаются с портами UDP. То есть, порт 1234 протокола TCP не будет мешать обмену по UDP через порт 1234. Ряд номеров портов стандартизован (см. Список портов TCP и UDP). Список поддерживается некоммерческой организацией IANA.В большинстве UNIX-подобных операционных систем прослушивание портов с номерами 0—1023 (почти все из которых зарегистрированы) требует особых привилегий. Каждый из остальных портов может быть захвачен первым запросившим его процессом. Однако, зарегистрировано номеров намного больше, чем 1024.

Материал взяты из Википедии — свободной энциклопедии





Спасибо за внимание!
(Троллей и флудерщеков сразу попрошу обойти тему мимо! И писать что-то вроде «Да кому нужен сервер на php» не стоит, раз урок написан – значит кому-то нужен!)




Сообщение отредактировал anton-gar - Понедельник, 12 Марта 2012, 14:32
MrNeshДата: Пятница, 24 Февраля 2012, 23:00 | Сообщение # 2
Воин добра и света
Сейчас нет на сайте
Посибо smile
Опробую напишу, а то ща только почитал sad


LunarPixelДата: Пятница, 24 Февраля 2012, 23:01 | Сообщение # 3
старожил
Сейчас нет на сайте
anton-gar, Код сам писал? smile

MrNeshДата: Пятница, 24 Февраля 2012, 23:10 | Сообщение # 4
Воин добра и света
Сейчас нет на сайте
LunarPixel, наверно кое что допилил wink

AGENTX001Дата: Пятница, 24 Февраля 2012, 23:13 | Сообщение # 5
почётный гцупер
Сейчас нет на сайте
Quote (anton-gar)
pascal/as 3.0

Паскаль это так сказать виндовс версия?)
Не спрошу, кому нужен php сервер, зато спрошу о его производительности biggrin
OleGoNДата: Пятница, 24 Февраля 2012, 23:16 | Сообщение # 6
Game Maker User
Сейчас нет на сайте
anton-gar, Здорово, продолжай! happy

LunarPixelДата: Пятница, 24 Февраля 2012, 23:18 | Сообщение # 7
старожил
Сейчас нет на сайте
Ну не знаю... погуглил, нашел идентичный код, просто помню что где-то такое уже видел... Вот в чем смысл?! Накопировал инфы и оформил.. написал бы тогда хоть комменты подробные на каждую строчку, чтобы больше пользы было. Или же ТС просто сам не знает, что там и зачем?! smile
Остальные уроки тоже будут копипастом?

Мне вообще всё равно, но просто смысла в этом не вижу. С таким же успехом можно было дать ссылки на википедию и на код.


anton-garДата: Суббота, 25 Февраля 2012, 00:03 | Сообщение # 8
WEBmaster
Сейчас нет на сайте
Quote (LunarPixel)
Остальные уроки тоже будут копипастом?


Нет, можете по теме в оглавлении проверить.

Quote (LunarPixel)
Ну не знаю... погуглил, нашел идентичный код, просто помню что где-то такое уже видел... Вот в чем смысл?! Накопировал инфы и оформил.. написал бы тогда хоть комменты подробные на каждую строчку, чтобы больше пользы было. Или же ТС просто сам не знает, что там и зачем?!


Согласен, по этому я разбирал, вот и дал для разогрева!

OleGoN, jiumx60rus, Спасибо!

AGENTX001, для простой игры хватит.

Добавлено (24.02.2012, 23:35)
---------------------------------------------

Quote (AGENTX001)
Паскаль это так сказать виндовс версия?)


Не без этого happy , честно - просто в Паскале чувствую пока себя лучше, чем в as3.0, вот и тестел с паскаля, а когда всё наладил, написал на флеше клиент.

Добавлено (25.02.2012, 00:03)
---------------------------------------------
LunarPixel, а уроков/статей по сокет связи as3.0 и php я вообще не нашёл, были только темы, в которых в основном через xml.


apoptomДата: Суббота, 25 Февраля 2012, 01:04 | Сообщение # 9
постоянный участник
Сейчас нет на сайте
На днях протестирую
VinchensooДата: Суббота, 25 Февраля 2012, 08:12 | Сообщение # 10
Злобный социопат с комплексом Бога
Сейчас нет на сайте
Quote (anton-gar)
Dever

Denwer что ли?
Quote (anton-gar)
Материал взяты из Википедии — свободной энциклопедии

И смысл, у кого-то нету мозгов в вики зайти?
А почему серве только под виндой или маком, кто сейчас сервера на винде-то держит?

anton-gar, что-то не вижу смысла в таких уроках. Написаны сложно и нудно. Человек, который осилит это прочитать- с тем же успехом может открыть гугл и найти всю инфу. Собственно, что за извращение.
Зачем вообще делать и клиент, и сервер на php? Зачем писать бесполезный урок? Я даже не вижу, где это может применяться.

В общем, невдувабельно. По крайней мере сейчас.


MrNeshДата: Суббота, 25 Февраля 2012, 11:57 | Сообщение # 11
Воин добра и света
Сейчас нет на сайте
Vinchensoo, нууу общее представление как все это робит wink smile

anton-garДата: Пятница, 09 Марта 2012, 12:44 | Сообщение # 12
WEBmaster
Сейчас нет на сайте
Vinchensoo,
Quote (Vinchensoo)
Denwer что ли?

Да, очепятка.

Quote (Vinchensoo)
Зачем вообще делать и клиент, и сервер на php? Зачем писать бесполезный урок? Я даже не вижу, где это может применяться.

Quote (anton-gar)
Введение, общее понятие.
• Урок первый – Написание простейшего «echo-(эхо)» сокет клиента/сервера на php.

Quote (anton-gar)
И писать что-то вроде «Да кому нужен сервер на php» не стоит, раз урок написан – значит кому-то нужен!)


А так - что бы проверить работу сервера.
---------------------------------------------
Да, этот урок был не самый, но для общего понятия подойдёт.
Думаю, последующие будут гораздо интересней и нужней!

Добавлено (09.03.2012, 11:58)
---------------------------------------------
Добавлен второй урок.
---------------------------------------------
Добавлено видео 3 урока.




Сообщение отредактировал anton-gar - Пятница, 09 Марта 2012, 15:30
YkyIIIycДата: Пятница, 09 Марта 2012, 16:03 | Сообщение # 13
был не раз
Сейчас нет на сайте
Спасибо за уроки, жду 3 урок.
anton-garДата: Пятница, 09 Марта 2012, 20:26 | Сообщение # 14
WEBmaster
Сейчас нет на сайте
Quote (YkyIIIyc)
Спасибо за уроки, жду 3 урок.


Не за что, скоро выложу и 3 урок.


MrNeshДата: Пятница, 09 Марта 2012, 23:17 | Сообщение # 15
Воин добра и света
Сейчас нет на сайте
anton-gar, в картинках покажи 3 smile

anton-garДата: Воскресенье, 11 Марта 2012, 22:14 | Сообщение # 16
WEBmaster
Сейчас нет на сайте




Сообщение отредактировал anton-gar - Понедельник, 12 Марта 2012, 14:41
kleopatraДата: Понедельник, 12 Марта 2012, 21:04 | Сообщение # 17
был не раз
Сейчас нет на сайте
Третий урок, правда, хорош, давно искала такой урок.
anton-garДата: Среда, 14 Марта 2012, 22:23 | Сообщение # 18
WEBmaster
Сейчас нет на сайте
Quote (kleopatra)
Третий урок, правда, хорош, давно искала такой урок.


Спасибо.


k7ckДата: Воскресенье, 22 Июля 2012, 11:22 | Сообщение # 19
был не раз
Сейчас нет на сайте
Спасибо за всю серию уроков =)

Выход есть всегда!
anton-garДата: Воскресенье, 22 Июля 2012, 13:31 | Сообщение # 20
WEBmaster
Сейчас нет на сайте
k7ck, всегда пожалуйста, будут вопросы - обращайтесь.

Форум игроделов » Движки для разработки игр и сложные системы разработки » Движки для браузерных игр » Серия уроков по созданию сокет клиента/сервера. (Серия уроков по созданию сокет клиента/сервера.)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг