![]() |
|
||||||||||
|
|||||
|
Регистрация: Nov 2007
Сообщений: 15
|
Эх. Тут в одну корзину уже накидали все что можно, даже крон приплели.
Давайте с начала. 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);
}
....
все видим что стоят листенеры на события сокета(как канала), вот my_socket.addEventListener(Event.CONNECT, connectHandler); это событие не отрабатывается. Следовательно коннекта по какой причине не происходит. Размещение всех файлов участвующих в процессе я описал. По идее все правила безопасности соблюдены. Пример работает если его запускать из exe файла, и раотает если его запускать из среды флэша. Также он работает на виндовом сервере IIS 6.0 и локально и удаленно. Последний раз редактировалось komar; 16.11.2007 в 14:18. |
![]() |
Часовой пояс GMT +4, время: 07:34. |
|
|
« Предыдущая тема | Следующая тема » |
|
|