Tyler Durden
Guest
Flash XMLSocket + patServer (Flash не видит PHP Socket...)
Мой вопрос касается взаимодействия объекта XMLSocket (Macromedia Flash) с HTTP-сервером. В качестве HTTP-сервера я выбрал patServer.
Возможно, кто-то из вас не знаком с patServer...
http://www.php-tools.de/site.php?file=patServer/overview.xml
В общем, задача ставилась следующая:
- Запустить patServer (у меня Apache 1.3.26, PHP 4.3.5, WinXP);
- Установить соединение между фильмом Flash и patServer;
- Произвести обмен данными.
Не буду полностью приводить текст программы patServer'а... Вкратце, socket должен запускаться вот так:
В фильме Flash создаем объект socket = new XMLSocket(). Прописываем для него метод Connect... Все это выглядит так:
socket = new XMLSocket();
socket.connect( null, 5555 );
null - означает, что соединение будет осуществляться для того хоста, откуда был загружен фильм Flash. В моем случае - это "localhost" или "127.0.0.1".
Короче, запускаю я всю эту канитель на своей машине... patServer запускается (в Логах все нормально, типа "Server started..."), Flash соединяется просто замечательно, отправляет данные серверу и получает их обратно... Но, как только я закачал все необходимые файлы и запустил их у провайдера, Flash отказался соединяться с patServer'ом. У провайдера Linux.
Я ничего не менял. В логах на сервере провайдера записано, что сокет для выбранного порта запущен... Самое обидное, что в памяти сервака у провайдера висят уже два моих процесса для разных портов...
Удалить их я никак не могу и соединиться тоже... А там стоит set_time_limit( 0 )... Так что же, они там теперь вечно висеть будут?! Я могу их закрыть только соединившись с фильмом Flash...
Объясните, пожалуйста, почему возникла эта проблема? Почему Flash может не видеть созданный socket?
Возможно, я слишком много лишнего тут понаписАл, потому как весь мой вопрос сводится к тому, почему на моей машине Flash соединяется с сокетом, а у провайдера - не хочет... Может я чего-то забыл дописать в коде программы?
Мой вопрос касается взаимодействия объекта XMLSocket (Macromedia Flash) с HTTP-сервером. В качестве HTTP-сервера я выбрал patServer.
Возможно, кто-то из вас не знаком с patServer...
http://www.php-tools.de/site.php?file=patServer/overview.xml
В общем, задача ставилась следующая:
- Запустить patServer (у меня Apache 1.3.26, PHP 4.3.5, WinXP);
- Установить соединение между фильмом Flash и patServer;
- Произвести обмен данными.
Не буду полностью приводить текст программы patServer'а... Вкратце, socket должен запускаться вот так:
PHP:
<?php
class myServer
{
var $host = "localhost";
var $port = 5555;
var $maxQueue = 500;
function myServer( $host, $port )
{
$this->host = $host;
$this->port = $port;
set_time_limit( 0 );
}
function start()
{
$this->initFD = @socket_create( AF_INET, SOCK_STREAM, 0 );
socket_setopt( $this->initFD, SOL_SOCKET, SO_REUSEADDR, 1 );
socket_bind( $this->initFD, $this->host, $this->port );
socket_listen( $this->initFD, $this->maxQueue );
/*Пишем Лог о запуске сервера*/
while( true )
{
$readFDs = array();
array_push( $readFDs, $this->initFD );
$ready = @socket_select( $readFDs, array(), array(), NULL );
/*... и так далее*/
}
}
}
$httpServer = new myServer( "localhost", 5555 );
$httpServer->start();
?>
socket = new XMLSocket();
socket.connect( null, 5555 );
null - означает, что соединение будет осуществляться для того хоста, откуда был загружен фильм Flash. В моем случае - это "localhost" или "127.0.0.1".
Короче, запускаю я всю эту канитель на своей машине... patServer запускается (в Логах все нормально, типа "Server started..."), Flash соединяется просто замечательно, отправляет данные серверу и получает их обратно... Но, как только я закачал все необходимые файлы и запустил их у провайдера, Flash отказался соединяться с patServer'ом. У провайдера Linux.
Я ничего не менял. В логах на сервере провайдера записано, что сокет для выбранного порта запущен... Самое обидное, что в памяти сервака у провайдера висят уже два моих процесса для разных портов...

Объясните, пожалуйста, почему возникла эта проблема? Почему Flash может не видеть созданный socket?

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