Форум 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)

LinuxVideo 15.11.2007 23:08

> почему флэшка не может открыть сокет с сервером;

Берешь сниффер и смотришь, чего реально происходит


> на апаче по идее по умолчанию стоит сокет сервер

Апач - это и есть сокет-сервер. Он же httpd(2)

alexcon314 15.11.2007 23:48

Цитата:

- действительно ли не нужно дополнительных прав для флэшки;
- почему флэшка не может открыть сокет с сервером;
- с слову о сокет-серверах, на апаче по идее по умолчанию стоит сокет сервер, который слушает 80 порт, иначе как идут хттп запросы на 80 порт.
какие такие права дополнительные? если скрипт в том же домене то все должно ездить.
с КАКИМ сервером флэшка не может окрыть соединение?
зачем СОКЕТОМ "лезть" в ПХП-скрипт? вы мне это можнте объяснить, что это вообще такое?
потом, запросы запросами, а ответы кто давать будет? тоже апач? ну так пробуйте завести сокет на <ip>:<port> вашего апача. что получится? если получится - что дальше?
LinuxVideo, слушать можно все что угодно и чем угодно, сниффером, tcpdump-ом, демоном из 20-ти строк на перле, апачем :), дальше что? услышали, и .... ?
человек хочет из базы данные во флэш по сокету сбрасывать, например. кто это будет делать? демон из 20-ти строк? тогда чем этот вариант лучше PHP+LoadVars?
дались вам эти сокеты, ейбогу.
ну пусть...
апач-это сокет,
запрос апачу отсылаем LoadVars-ом (URLRequest-ом) типа "http://....page.php?param1...&param2=...."
апач, увидев, что клиент хочет php, запускает скрипт page.php, который лезет в базу, дергает данные, формирует ответ.
апач отсылает ответ флэшу.
чем не сокет? :) чем вас не устраивает такая незаурядная в своей простоте схема?
повторюсь, если ищете "особых" решений - юзайте сокет. он вам будет давать те же ответы без участия апача и пхп, если вы сумеете его заставить это делать конечно.

komar 16.11.2007 00:10

Цитата:

Сообщение от alexcon314
зачем СОКЕТОМ "лезть" в ПХП-скрипт? вы мне это можнте объяснить, что это вообще такое?

swf открывает сокет с сервером, через этот сокет общается со скриптом, получает/отправляет информацию, обновляет информацию в самом swf

Цитата:

Сообщение от alexcon314
ну так пробуйте завести сокет на <ip>:<port> вашего апача. что получится? если получится - что дальше?

разницы никакой, что на хост что на айпи

Цитата:

Сообщение от alexcon314
человек хочет из базы данные во флэш по сокету сбрасывать, например. кто это будет делать? демон из 20-ти строк? тогда чем этот вариант лучше PHP+LoadVars?
дались вам эти сокеты, ейбогу.
апач-это сокет,
запрос отсылаем LoadVars-ом (URLRequest-ом) типа "http://....page.php?param1...&param2=...."
апач запускает скрипт page.php, который лезет в базу, дергает данные, формирует ответ.
апач отсылает ответ флэшу.
чем не сокет? :)

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

grunerasta 16.11.2007 00:41

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

Если писать сокет на питоне или ему подобных - то обрати вниманиена символ номер 27: так флеш говорит, что передача окончена

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

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

Хостинг нужен выделенный, лучше колокейшн - потому что все что выше апача на стартовых тарифах не работает

Chas 16.11.2007 03:06

по-моему у автора тут вообще недопонимание некоторое есть. сокет-клиент соединяется не со скритом http://www.test.ru/index.php. он соединяется с ip-адресом по такому-то порту. на машине по этому адресу должен стоять сокет-сервер, который слушает этот порт. после установки соединения клиент общается с сервером с помощью протокола сервера. если ты приконектишся к апачу по его стандартному порту :80 то общаться тебе с ним нужно на HTTP. для своей игры/интерфейсу к базе/что-то другое тебе нужно будет написать свой сокет-сервер. это достаточно сложно даже на пхп (ненадо, кстати, ля-ля, что на пхп сокет-серверы не пишут. с мемкешем и оптимайзерами спокойно держат больше 400 юзеров). к локальному апачу локальная флешка с сокет-клиентом подключаться должна. если этого не происходит - у тебя ошибка где-то.
сырые сокеты нужно использовать только когда для тебя критично важно время отклика и нагрузка на сервер(к тому же для сокета тебе понадобится виртуалньый хост с ssh, доступом к cron, etc...) если нет - используй XML.sendAndLoad или LoadVars. пример XML.sendAndLoad я недавно писал:
http://www.flasher.ru/forum/showpost...57&postcount=8

LinuxVideo 16.11.2007 11:52

Люди, откуда пошло это извращенное "сокет-сервер"? Мне читать вас больно, режет глаз. Это как масло-маслянное.
http://ru.wikipedia.org/wiki/%D0%A1%...5%D0%B9%D1%81)
http://ru.wikipedia.org/wiki/%D0%A1%...B2%D0%B5%D1%80
http://ru.wikipedia.org/wiki/%D0%A1%...0%BB%D1%8C_OSI

Цитата:

человек хочет из базы данные во флэш по сокету сбрасывать, например. кто это будет делать? демон из 20-ти строк? тогда чем этот вариант лучше PHP+LoadVars?
Да, именно он. И лучше будет тем, что не будет промежуточных оберток и парсеров. Вот надо мне во флешку передать 10 000 координат, как мне это сделать? Вариантов несколько... А если 100 000? Интересно, после какого количества сдохнет парсер (или начнет дико тормозить)? А сокет я могу читать по мере надобности, считал 8 байт - отрисовал. Через 1/25 секунды еще 8 байт считал, еще отрисовал. Да еще и сервер может постоянно контролировать поток, а значит интерактивность. На лоадварс мне же надо будет постоянно долбить сервер запросами. Уж лучше изобрести велосипед в виде своей собственной транспортной обертки, чем использовать чужие без понимания их устройства.

Цитата:

если флешка работает не через хттп, а через сокет (а ведь ты надо полагать хочешь юзать XMLSocket) - то файл этот надо получить тоже из сокета.
А что, http работает БЕЗ сокетов? Читайте ссылки, читать "масло-маслянное" сложно. XMLSocket и Socket не путаем.

Цитата:

а в апач писать могут только очень взрослые дяди с большим пузом и бородой
:lol:
У меня еще и волосы длинные.

Цитата:

Хостинг нужен выделенный, лучше колокейшн
Лучше сразу свой датацентр

Цитата:

это достаточно сложно даже на пхп
Про пхп не скажу (не люблю его), а на перле - 20 строк, в документации есть пример с построчным описанием. Можно скопипастить и поправить для себя

Цитата:

доступом к cron
Крон то для чего? Чего планировать надо?

grunerasta 16.11.2007 12:51

Цитата:

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

И разреши заметить, что это выражение ты тут сам употреблял и расшифровывал не дале как вчера.

Цитата:

А что, http работает БЕЗ сокетов? Читайте ссылки, читать "масло-маслянное" сложно.
Согласен, читать сложно, а вот к словам прие&ываться не по теме - большого ума надо.

Цитата:

XMLSocket и Socket не путаем.
Да, надо было написать "XMLSocket или Socket" - автор же задачу не обозначил. Извиняюсь если вызвал разночтения.

Цитата:

Лучше сразу свой датацентр
Лучше, но автор не осилит. Я тоже не осилю.

Цитата:

У меня еще и волосы длинные.
Эмо?

Цитата:

ненадо, кстати, ля-ля, что на пхп сокет-серверы не пишут. с мемкешем и оптимайзерами спокойно держат больше 400 юзеров
Может и держат, но жутко неудобно это писать, неэстетично и не красиво
***Теперь и я к свовам прие&ался. LinuxVideo, ваш дурной пример заразителен...

Chas 16.11.2007 13:14

та что за глупости: "народный фольклор ". это нормальное употребляемое слово. если не совру, то в Delphi стандартные компоненты так и назывались: Socket-client, Socket-server. это исключительно юниксоиды используют словечки типа демон, скелетон и т.д. с подачки некоторых авторов.

LinuxVideo 16.11.2007 13:45

Цитата:

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

Цитата:

Эмо?
Админ.

Цитата:

то в Delphi стандартные компоненты так и назывались
Вот именно, что компоненты. Простые функции для приема и отправки данных. А тут socket server уже и в базы лазиют, запускаясь по крону... А потом "установлен сокет сервер на апаче".
Лучше "TCP-приложение, принимающее входящие соединения".

Прошу прощения за оффтоп.

komar 16.11.2007 14:06

Эх. Тут в одну корзину уже накидали все что можно, даже крон приплели.
Давайте с начала.

1. Речь определенно идет о AS3, и его новом классе Socket. В AS2 его насколько я знаю нет. Отличается от XMLSocket и подобных ему, что предназначен для простого соединения с сервером без установки всяких стандартов передачи данных (как например в XMLSocket формат = XML). В классе Socket создается только сам сокет (канал с сервером), а дальше в этом канале уже делай что хочешь. (для начала просто пишешь руками HTTP запросы http://www.javable.com/columns/serv_...%3F%3F%3F+POST - кому интересно). Т.е. можно передавть данные в бинарном виде, в тексте (UTF) и т.д. Короче полная свобода.

Еще раз, XMLSocket тут вообще ни причем. Он даже работает немного по другому, и параметром у него раза в 2-3 меньше.

2. Сокет-сервер - разновидность Демона (Daemon - http://ru.wikipedia.org/wiki/%D0%94%...0%BC%D0%B0%29), как раз программа (фоновой процесс, если на уровне сервера) которая запускается на сервере (имеется ввиду машина) автоматом и слушает порт, например.

2.1 Сокет - на программном уровне - интерфейс. Т.е. набор правил и команд позволяющий клиенту (в нашем случае, в общем случае и серверу) соединяться с сервером. Т.е. модель/способ/правила/интерфейс (кому как понятнее) соединения с сервером. В данном случае открытие канал связи.
http://ru.wikipedia.org/wiki/%D0%A1%...D0%B9%D1%81%29

3. Обычные (на уровне пользователя) серверы на которых размещаются сайты, в том числе и этот, это и есть сокет-серверы. Помимо сокет-серверов есть другие типы Демонов (к ним уже относится упомянутый cron, который занимается "фоновой" планировкой и выполнением различных задач, на сколько я знаю на основе cron`ов работают различные боты, которые время от времени сканят какие-либо ресурсы = плнарование и выполнени - просто пример).

4. Апач - сокет-сервер на UNIX системе (есть различные виндовые сокет-серверы, с ними особо не знаком) настроенный на 80 конкретно. Т.е. он специально предназначен для хттп протоколов, которые являются стандартом для 80 порта. На апаче стати и ваш сайт стоит :)
И вот открытие страниц, например http://www.flasher.ru происходит как раз по средством сокета (канал), который открывается на 80 порту, и при обмене информации в запросах используется http протокол.

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

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

-------
Таким образом происходит типичная подмена понятий. Вообще слово "сокет" используется много где, и языках программирования и в терминологии сети и в том же АS.
-------
Речь идет о классе Socket, который из флэшки (файла swf) должен открывать сокет (канал) с сервером (апач=сокет-сервер), по определенному домену и порту (для апача это 80 порт).

О форматах передачи данных и запросах, и всем остальном пока речи не идет. Пока что все встает на этапе коннекта и открытия сокета (канал). Т.е. до скрипта к которому должен идти хттп запрос дело даже не доходит.

Все-таки думаю стоит вам посмотреть описание класса Socket.

-------
Выкладываю все-таки часть кода:
Код:

package {
    import flash.display.Sprite;
        import flash.errors.*;
        import flash.events.*;
        import flash.net.Socket;
        import flash.system.Security;

        public class SocketExample extends Sprite {
                public var my_socket:Socket;
                public var host_url:String="localhost";

                public function SocketExample() {

//                        Security.allowDomain(host_url);
//                        Security.loadPolicyFile("http://design.severodvinska.net/crossdomain.xml");

                        my_socket = new Socket(host_url, 80);

                        my_socket.addEventListener(Event.CLOSE, closeHandler);
                        my_socket.addEventListener(Event.CONNECT, connectHandler);
                        my_socket.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
                        my_socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
                        my_socket.addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler);




                }
....

код - из примера работы с классом Socket (Flash 9 Help -> class Socket)

все видим что стоят листенеры на события сокета(как канала), вот
my_socket.addEventListener(Event.CONNECT, connectHandler);

это событие не отрабатывается. Следовательно коннекта по какой причине не происходит.

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

Также он работает на виндовом сервере IIS 6.0 и локально и удаленно.


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

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