Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Flash->Socket->PHP Альтернативы (http://www.flasher.ru/forum/showthread.php?t=103931)

alexcon314 16.11.2007 14:07

LinuxVideo - супер.
а теперь, если вас не затруднит, LinuxVideo - ваше решение проблемы автора.
задача.
используя стандартный флэш-клиент, осуществить соединение с сервером, передать/получить данные в удобном для автора формате (вариант - JSON).
при этом предполагается, что данные могут либо должны заносится/выниматься в/из базу(ы).
.....
решения на основе LoadVars/XML.sendAndLoad+PHP/Perl не предлагать :).
.....
хорошо бы без терминологических опусов. просто те самые 20 строчек кода, для начала.
.....
(добавлено)
komar, ок. теперь все встало на свои места.
почему бы было не назвать топик типа "Не работает то-то и то-то (AS3)" и не понуждать всех угадывать то что вам действительно нужно?

grunerasta 16.11.2007 14:29

komar, http-протокол разрывает соединение сразу после обмена данными, и вообще хз как реагирует на не-браузеры, апач по идее ждет - потом нах шлет, че делает IIS науке вообще не известно, флешу это не нравится, пиши отдельный сервер

А вообще чтобы вкурить тему - напиши сначала консольный клиент (ну или сп*зди откуда-нибудь, опен-соурс нынче популярен), подолбись им на 80й порт - и внимательно подумай над тем что он тебе расскажет

LinuxVideo 16.11.2007 14:34

> http-протокол разрывает соединение сразу после обмена данными

keep-alive


> просто те самые 20 строчек кода, для начала.

Код:

          #!/usr/bin/perl -Tw
          use Socket;
          my $EOL = "\015\012";
          sub logmsg { print "$0 $$: @_ at ", scalar localtime, "\n" }
          my $port = shift || 2345;
          my $proto = getprotobyname('tcp');
          ($port) = $port =~ /^(\d+)$/                        or die "invalid port";
          socket(Server, PF_INET, SOCK_STREAM, $proto)        || die "socket: $!";
          bind(Server, sockaddr_in($port, INADDR_ANY))        || die "bind: $!";
          listen(Server,SOMAXCONN)                            || die "listen: $!";
          my $paddr;
          $SIG{CHLD} = \&REAPER;
          for ( ; $paddr = accept(Client,Server); close Client) {
              my($port,$iaddr) = sockaddr_in($paddr);
              my $name = gethostbyaddr($iaddr,AF_INET);
              print Client "Hello there, $name, it's now ",
                              scalar localtime, $EOL;
          }

(c) perldoc perlipc
Из примера выкинуто немного, зато в 20 строк уложился.

komar 16.11.2007 14:35

хорошо что всем (надеюсь всем) всё стало понятно.

Я хотел сначал добавить эту тему в раздел про АС3, но считаю все-таки что дело не сколько в работе класса Socket, сколько в модели общения с сервером. Т.е. как раз "другие технологии"

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

Дело именно в коннекте.
Т.е. варианты какие у меня наварились в течении этой недели:
1. Проблема с настройками сервера (админы и хостеры говорят что проблем быть не может)
2. Проблема с правилами безопасности (вохможна, хотя по манам не должно быть), и + не выдается никаких ошибок безопасности. На них тоже стоят листенеры.
3. Проблема правом коннекта к апачу для сторонних приложений (swf вместо броузера), хотя exe коннектится даже с локалки.
4. Ограничения коннекта в самом броузере (например, броузер не дает содержимому страницы осуществлять коннект в обход броузера).
5. Настройки флэшки на адобе (manager) и подобное не применимо поидее.
6. Видел мнение, что нужны выделенные серверы. Что мол на виртуальный хост коннект не получится. По-моему чушь, т.к. запросы страниц идут через такие же каналы.
7. Есть мнение что права коннекта могут зависеть от типа вставки swf в хтмл страницу. Т.е. обжекты, эмбеды и т.д. + часто многие используют яваскрипт для интерпретации флэшек (обычно для ИЕ, т.е. в нем баг, и сами микросовтовцы распространяли пример функций, как надо в для ИЕ вставлять флэшки).

LinuxVideo 16.11.2007 14:39

> Проблема с настройками сервера (админы и хостеры говорят что проблем быть не может)

Бери сниффер и смотри. Приходит ли вообще хоть чего-то, чего в ответ.


> По-моему чушь, т.к. запросы страниц идут через такие же каналы.

совершенно верно

komar 16.11.2007 14:44

Цитата:

Сообщение от grunerasta
komar, http-протокол разрывает соединение сразу после обмена данными

да, я знаю, ну и что. Разорвал соединени. На как данные понадобились, мы его снова открыли, для этого класс Сокет и юзается

Цитата:

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

Цитата:

А вообще чтобы вкурить тему - напиши сначала консольный клиент (ну или сп*зди откуда-нибудь, опен-соурс нынче популярен), подолбись им на 80й порт - и внимательно подумай над тем что он тебе расскажет
писать ниче не надо. Есть telnet, есть ворох сниферов если надо более подробно.
Но стобы этим пользовать нужны спец знания, которых у меня нет.

А вопрос был задан с расчетом, что кто-то пользовался классом Сокет, или сталкивался с подобными проблемами.

Ответы типа "возми то-то, догадайся сам" по-моему не для форума, где должны помогать решать задачи.


Цитата:

Сообщение от LinuxVideo
> Проблема с настройками сервера (админы и хостеры говорят что проблем быть не может)

Бери сниффер и смотри. Приходит ли вообще хоть чего-то, чего в ответ.

К этому все идет. Снифер я нашел, терь ищу кто мне с ним работать поможет. А то он больно навороченный.

grunerasta 16.11.2007 15:05

Тваюжмать! Не услышишь ты ничего от 80го порта!
http://www.scribd.com/doc/134861/Soc...ng-with-python - описание
http://python.active-venture.com/lib...t-example.html - питон эхосервер

А с хостингом у тебя большие проблемы - во первых виртуальный, во вторых винда, в третих иис. Полный комплект суррогатных серверных технологий, которые непонятно через какую ж работают (админы сами не знают - вот и шлют тебя нах и идут пить пиво).

Выделеный сервер - это тво ип, твоя строка, твой сервер - че хош то и вешай, а виртуальный - это один большой компутер и много сайтов, сайт выдается взависимости от заголовка (грубо говоря от того, что ты напишешь в адресной строке браузера) и пока заголовок не пришел - он [сервер] будет очень тактично молчать.

Итог:
1. Кто не платит идет - идех нах, закон жизни, в том числе и хостерской.
2. Проблема есть, решение выше
3. Опции компиляции проверь, чтобы было написано что-то вроде "4network"
4. Дает
5. Мысль не понял
6. Мнение обьективно (см п.1)
7. Таких проблем не встречал, ничо сказать не могу

grunerasta 16.11.2007 15:08

Цитата:

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

komar 16.11.2007 16:04

2grunerasta:

ты сама не втеме.
Я сокет юзаю для создания канала (это его прямое назначение, а оставлять его открытым или закрывать после обмена данными, это отдельная темы. И как прально LinuxVideo сказал, это прописывается в хедере запроса) между флэшкой и сервером, меня твоя биржа не интересует.

С хостингом у меня все впорядке. Щас тока раз ты тут ляпнул что-то, побегу выделенный покупать. Ага.
Уже две страницы речь идет об Апаче на линуксе. Про иис упомянул один раз - на нем были тесты, там все работает.

От виртуальности хостинга работа сервера зависеть не должна, он как слушал порт, так и слушает. + даже если, как ты говоришь, на простой коннек ответа идти не должно (типа там сервер плохой, бла бла бла) - пробовали и запросы отправлять, разницы никакой.

+ коннект проходит, и запросы проходят, и даже отрабатывается скрипт. Если флэшка компилеца из среды или из ехе (уже ни раз писал). Так что о невозможности коннекта, ваще ниче слышать не хочу. Он возможен, но где-то сидит косяк. :(

Ответ, типа пади питон изучи, и не мудись с флэшем очень в тему ;) +1

на счет "итог:"`а, тоже улыбнуло. Опять все сводится к тому, что чтобы swf работал как описано в мане к нему (флэшу), надо ставить до*я приблуд, знать еще кучу языков, самому написать сервер и т.д. :)

-----

Еще к слову.
3. Опции компиляции проверь, чтобы было написано что-то вроде "4network"

Эта опция нужна чтобы устанавливать настройки для флэшек запущенных локально. Почему локально? Объясняю.
Есть такое понятие sandbox. В мане описано подробно. Оно управляет базовыми правилами безопасности, и определяется в основном локацией флэшки. Т.е. это система (предположительно файловая, в которой флэшка и лежит) + приложение которое открывает флэшку = отношение между ними.

Если флэшка запускается локально (напрямую в плэйере, или через броузер, но локально) у нее может быть два статуса:
- localWithNetwork (свобода действий в свой локали, допустим выход в интернет, но там уже надо соблюдать правила безопасности, и обычно кроссдоменности)
- localWithFile (только локально)
Значения думаю понятны. Вот выбор из них как раз и определяют настройки компиляции. Соответственно если оставить то что стоит по-умолчанию, мы получим localWithFile.

Когда флэшка запускается по УРЛ с сервера (даже если мы запускаем хтмл страницу, в которой флэшка), то полюбому влэшка получает статус
REMOTE. Означает что влэшка в рамках своего домена свободна в действиях, и работает по правилам безопасности домена (хоста, сервера).

+ в описании класса Sокет, указано:
Data loading is not allowed if the calling SWF file is in the local-with-file-system sandbox and the target resource is from a network sandbox.
Data loading is also not allowed if the calling SWF file is from a network sandbox and the target resource is local.

Недопустимые "песочницы" видим. Наша флэшка под это не подпадает.

+ есть четвертый вариант sandbox`a : localTrusted. Как я понял - ваще полнейшая свобода. Такой статус флэшка получает при компиляции в среде флэша, и при компиляции в exe файл. (как раз те случаи, в которых коннект срабатывает).

komar 16.11.2007 16:11

Ув. админы. Специально пишу отдельным постом.

Измените пожста название темы (как самому сделать не нашел). Т.к. разговор уже ушел в другое русло (про альтернативы закончили, речь о классе Socket из AS3, и его коннекте с сервером), а новую тему открывать нет смысла.


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

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