Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Пример работы с сокетами в AS3 (http://www.flasher.ru/forum/showthread.php?t=207635)

ZackMercury 27.04.2014 15:44

Пример работы с сокетами в AS3
 
Кто может скинуть пример отправки и приёма сокетов с клиента и с сервера на PHP или Java? Если кто-то встречал, или может сам быстро накатать, скиньте пожалуйста.
Хотя в общем я бы хотел заодно спросить совета - какой язычок лучше для многопользовательских игр использовать?)

morgenshtern 27.04.2014 17:24

Вот на этом сайте часто неплохие примеры кто-то выкладывает, и даже про сокеты:
http://help.adobe.com/ru_RU/FlashPla...xamplesSummary


Цитата:

какой язычок лучше для многопользовательских игр использовать?
очевидно что ява, си.
Я, ради прикола, на air писал, но тогда на никсах от него отказались и я забил)

ZackMercury 27.04.2014 21:01

Цитата:

Сообщение от morgenshtern (Сообщение 1164710)
Вот на этом сайте часто неплохие примеры кто-то выкладывает, и даже про сокеты:
http://help.adobe.com/ru_RU/FlashPla...xamplesSummary

Вижу только клиент, а сервер, допустим, на C# или Java?

alexcon314 27.04.2014 22:33

Вверну 5 копеечек. Вот все многие говорят: сервер - это java, C#, ну, Си для красного словца ввернут...
Тем временем в "страшном и ужасном" Си/С++ есть замечательные библиотеки-обвязки над сокетами на любой вкус.
Из тех, что на слуху:

boost::asio - тяжеленькая и по весу и по порогу, но ... это boost.
libuv - платформа, на которой крутится node.js. (Си-style)
libevent - асинхронный неблокирующий ввод-вывод.
poco - высокоуровневая либа, содержит массу полезностей в удобных оберточках (a-ля C#).

Конечно, изложенное выше, никак не призыв отказываться от привычных и знакомых инструментов, той же явы.. но все же :).
Ну, да. На любителя, кто-то скажет. Но профессионалы вполне себе пользуют.

PS. очень жаль, что нет биндинга zmq (Zerо MQ) для флеша. Это... ну очень мощная обвязка для серверов.
PSS. естественно, все опенсорс :).

UPD.
Цитата:

нет биндинга zmq (Zerо MQ) для флеша
о_о. Просмотрел, есть биндинг http://zeromq.org/bindings:javascript

ZackMercury 27.04.2014 22:42

Цитата:

Сообщение от alexcon314 (Сообщение 1164722)
Вверну 5 копеечек. Вот все многие говорят: сервер - это java, C#, ну, Си для красного словца ввернут...
Тем временем в "страшном и ужасном" Си/С++ есть замечательные библиотеки-обвязки над сокетами на любой вкус.
Из тех, что на слуху:

boost::asio - тяжеленькая и по весу и по порогу, но ... это boost.
libuv - платформа, на которой крутится node.js. (Си-style)
libevent - асинхронный неблокирующий ввод-вывод.
poco - высокоуровневая либа, содержит массу полезностей в удобных оберточках (a-ля C#).

Конечно, изложенное выше, никак не призыв отказываться от привычных и знакомых инструментов, той же явы.. но все же :).
Ну, да. На любителя, кто-то скажет. Но профессионалы вполне себе пользуют.

PS. очень жаль, что нет биндинга zmq (Zerо MQ) для флеша. Это... ну очень мощная обвязка для серверов.
PSS. естественно, все опенсорс :).

alexcon314, приятель, мне бы понять, как вообще языки между собой обмениваются и как работать с сокетами без всяких обвязок для начала. Нигде не могу найти самого незапутанного всякими Darkstar'ами кода, без лишних библиотек.

morgenshtern 27.04.2014 23:05

Цитата:

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

Возьмите какой нить простейший пример сервера на пхп, клиента на as3 из доки адоба, и поковыряйте.

ZackMercury 28.04.2014 00:13

Цитата:

Возьмите какой нить простейший пример сервера на пхп, клиента на as3 из доки адоба, и поковыряйте.
Не вижу, я походу совсем слепой, у класса Socket только один пример без сервера, просмотрел список, вроде подобных примеров нет.

morgenshtern 28.04.2014 00:51

так я и говорю, клиента на ас3 из примера адоба, что кинул, а сервер на пхп придется найди отдельно.
Это есть в гугле. Например http://habrahabr.ru/company/ifree/blog/209864/
Примеры на яве / сях гуглятся аналогино пхпшному...

alexcon314 28.04.2014 08:28

Цитата:

языки между собой обмениваются
Обмениваются языки? Эмм... да. "мышь" и "mouse" - это языковые представления одного и того же. Данные суть независимая от языка сущность и всегда в компьютерном мире пердставляется в виде последовательности байт. Модель обмена этими самыми данными (читай байтами) не слишком сложна для понимания, если абстрагироваться от физических процессов, происходящих при этом.

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

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

ZackMercury 05.05.2014 01:31

alexcon314. Решил я вот взять и начать учить С++ 3 дня назад.
Могу с уверенностью сказать, что это были самые унылые 3 дня моей жизни.
Такой жести я ещё не видел.
Код вообще никак не структуризируется, все действия только последовательные.
В конце концов, столкнулся даже с тем, что метод нельзя объявить после кода, где он используется.
Просто жесть. Названия страшные(Особенно в OpenGL). В OpenGL тысячи функций и оно вообще не структуризируется в памяти(памяти мозга).
Ладно, хорошо, думаю, пусть даже так. Есть ведь классы, можно с ними работать.
Потом столкнулся с той фигнёй, что в С++ нельзя получить длину массива и приходится пользоваться каким-то бредом, типа
PHP код:

for( vector :: iterator i = ... .start(); < ... .end(); i++) 

Даже не запомнил, что там писалось, ибо даже не представляю, каким нужно быть извращенцем, чтобы придумать подобное.
Мне искренне жалко людей, которые пишут на С++, потому, что это просто жесть.
Я бы с ассемблером работал с большим интересом(надеюсь).

И тут я подумал, что, может быть, мне просто попался неудачный чувак, который всё неправильно трактует. И тут я посмотрел на передаваемые аргументы в функции OpenGL и захотелось выбить глаз разработчику С++. Передаваемые аргументы с прочерком, это просто полная противоположность договорённостям в AS3. Пространства имён, нафига они вообще, когда есть классы? Ну ладно это...
Я даже смирился с тем, что приходится инициализировать массивы магическими значениями.
Я даже смирился с тем, что с памятью приходится работать явно, а не абстрагировавшись от процессов, происходящих при этом в компьютере. Да, иногда это действительно может быть нужно.
Я даже смирился с ссылками на ячейки памяти(выделяемые под переменные), и что они действительно мне пригодятся(хотя я так и не понял, зачем). Ну пусть таким образом и можно получить второй и третий и минус первый элемент массива лишь прибавив к ссылке +1, +2 или -1. А каково их практическое применение(вряд ли кто-то будет работать с массивом таким образом, когда можно просто получить элемент явным образом(в квадратных скобках).

Самое жестокое - это работа с OpenGL вообще без ООП(Тупо вызывая функции).
Вместо нормального ООП какие-то пространства имён, вообще не структуризированные.
Жесть, когда я посмотрел на работу с этими функциями.
Чтобы вращать объект, нужно сделать 3 глобальных переменных.

Ладно, подумал я. Тут ведь можно зашаманить это дело в понятные символы директивы препроцессора С++.
В общем, или у меня просто каша в голове, или этот С++ - это жесть.
Даже имена встроенных классов с маленькой буквы(кстати, почему в AS3 int со строчной буквы я так и не вдуплил).
Вот если у вас есть пример любой несложной программы на С++, написанной в хорошем тоне(чтобы я увидел, что С++ ещё хоть куда не идёт), скиньте примерчик.

Ладно, пойдём дальше.
Сегодня же я открыл видеокурс от англичанина по 3D Game Programming на Java.
Мои глаза, кажется, вернулись в своё нормальное положение, после того, как они закатились от С++.
Java выглядит идеально, ровно и красиво. А главное - вполне логично. Даже правила написания сходны.

Всё было понятно, ясно и чисто, код идеальный.
Что со мной не так?
Я не понимаю вашу любовь к С++.
Просто не понимаю.
Ужас.
Кошмар.
Что за битовые сдвиги вместо конкатенации строк и переменных в строку при выводе в консоль cout?
Бред вообще, ну никуда не лезет просто.
В аргумент представлю вполне логичную Java и AS3 команду вывода в консоль.
Код:

System.out.println();
Код AS3:

trace();

В топку OpenGL. Больше никогда не открою уроки по OpenGL с его вообще аллогичными и сложными для запоминания, причём длинными функциями.

Потом, идём дальше.
Получается, в качестве аргументов функции нельзя передать, например, если это float, то нельзя передать int, и если это double, то нельзя передать ни int, ни float. Просто мозг вскипает.

По этой причине в OpenGL почти каждая, *****, функция, триплирована на 3 типа передаваемых аргументов.
Типа для примера(точно не помню, какие функции, так как запомнить их - сломать своё представление о динамическом программировании)
glSetColor3f
glSetColor3d
glSetColor3i
glSetColor4d и так далее.
Просто слов нет.
Ну хорошо, я и с этим смирюсь когда-нибудь. И тут меня мучает вопрос:
Стоит ли мучаться с ним?
Вы вообще как к нему относитесь?
Каковы ваши аргументы?
Что С++ умеет(кроме скорости), что не умеет, например, Java?
Как вы можете терпеть все эти ломающие стереотип наименования, от которых моя психика пала?

Как запомнить это всё, не подскажите методику?
По сути, даже не верится, что Flash компилируется в С++.

Я бы с радостью использовал Java в качестве сервера, но если вы приведёте аргументы в пользу С++, я буду и дальше себя мучать всеми этими вещами.

Что-то мне подсказывает, что С++ стоит учить на "чистый мозг", когда вообще не знаешь ни одного ECMAScript-подобного языка.

Один человек однажды мне сказал, когда я ещё не был знаком с синтаксисом подобному Java, что Java похожа на С++, поэтому я смогу выучить Java, если буду знать С++.
С первым он 100% фейлнулся, а вот во втором, похоже, он оказался прав. Только я хочу теперь наоборот, из синтаксиса Java перейти на C++.

Может, половина поста и бредни, но я не могу уложить в голове все эти вещи, поэтому спрашиваю у вас.


Часовой пояс GMT +4, время: 10:16.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.