Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   исходники банального "helloy world" сокет соединения as3 + php (http://www.flasher.ru/forum/showthread.php?t=211243)

tattori 18.07.2015 17:54

исходники банального "helloy world" сокет соединения as3 + php
 
пааарни мой мозг щас взорвется. хочу изучить сокеты в связке as3+php, вроде как то разобрался но вот политика безопасности уже неделю стоит в горле, что не так не понимаю, не поленитесь кто нибудь дайте исходники банального "helloy world" сокет соединения as3 + php с политикой безопасности что бы все работало. буду непомерно благодарен

Добавлено через 1 минуту
не туда написал по ходу сорри

AlexCooper 18.07.2015 17:56

здесь могла быть ваша реклама

tattori 18.07.2015 20:18

Код AS3:

package  {
 
        import flash.display.MovieClip;
        import flash.events.ErrorEvent;
    import flash.events.Event;
    import flash.events.IOErrorEvent;
    import flash.events.ProgressEvent;
    import flash.events.SecurityErrorEvent;
    import flash.net.Socket;
    import flash.utils.ByteArray;
    import flash.events.MouseEvent;
        import flash.system.Security;
                import flash.system.SecurityPanel;
 
 
        public class main extends MovieClip {
 
 
                public function main() {
                        // укажите хост для создания подключения
            var host:String = '127.0.0.1';
            // укажите порт для создания подключения
            var port:uint = 1985;
                        // создаем объект-сокет
 
                Security.loadPolicyFile("xmlsocket://127.0.0.1:1985")
 
                        //Security.loadPolicyFile("http://127.0.0.1/crossdomain.xml");
 
          var socket = new Socket();
            // слушаем события
 
            socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, errorHandler);
            socket.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
            socket.addEventListener(Event.CONNECT, connectHandler);
            socket.addEventListener(ProgressEvent.SOCKET_DATA, dataHandler);
            // устанавливаем соединение по указанному хосту и порту
 
                  stage.addEventListener(Event.ENTER_FRAME, ww)
                  function ww(event:Event):void
                  {
                          socket.connect(host, port);
                          stage.removeEventListener(Event.ENTER_FRAME, ww)
                  }
 
                        /**
        * Обработчик событий об ошибках
        */

      function errorHandler(event:ErrorEvent):void
        {
 
            trace('Ошибка. error type='+event.type);
            switch (event.type) {
                case IOErrorEvent.IO_ERROR:
                                ttt.text = "ошибочка";
                    trace('Ошибка возникает когда по указанному хосту не удается найти сокет-сервер');
 
                                        break;
                case SecurityErrorEvent.SECURITY_ERROR:
                                ttt.text = "Ошибка возникает когда срабатывает политика безопасности флешки. Сокет-сервер должен вернуть полиси-файл.";
                    trace('Ошибка возникает когда срабатывает политика безопасности флешки. Сокет-сервер должен вернуть полиси-файл.');
                    break;
            }
 
        }
 
 
 
 
 
 
 
                /**
        * Обработчик события об успешном подключении к серверу
        */
var command:int = 1;
 
      function connectHandler(event:Event):void
        {
 
            ttt.text = 'соединение установлено';
                        command = kkl.x;
            socket.writeUTFBytes(command);
            socket.flush();
 
        }
 
 
                /**
        * Обработчик получения данных от сервера
        */

 
      function dataHandler(event:ProgressEvent):void
        {
                        ttt.text = 'Получены новые данные';
            trace('Получены новые данные');
        var readSock:String = socket.readUTFBytes(socket.bytesAvailable)
                trace(readSock);
                ttt.text = readSock;
                stage.addEventListener(Event.ENTER_FRAME, ww)
        }
 
 
 
 
                }
        }
 
}

PHP код:

<?php

header
('Content-Type: text/plain;'); //Мы будем выводить простой текст

set_time_limit(0); //Скрипт должен работать постоянно

ob_implicit_flush(); //Все echo должны сразу же отправляться клиенту

$address '127.0.0.1'//Адрес работы сервера

$port 1985//Порт работы сервера (лучше какой-нибудь редкоиспользуемый)

if (($sock socket_create(AF_INETSOCK_STREAMSOL_TCP)) < 0) {
    
//AF_INET - семейство протоколов
    //SOCK_STREAM - тип сокета
    //SOL_TCP - протокол
    
echo "Ошибка создания сокета";
  }
  else {echo 
"Сокет создан\n";}
 
//Связываем дескриптор сокета с указанным адресом и портом
  
if (($ret socket_bind($sock$address$port)) < 0) {
    echo 
"Ошибка связи сокета с адресом и портом";}
  else {echo 
"Сокет успешно связан с адресом и портом\n"; }




 
//Начинаем прослушивание сокета (максимум 5 одновременных соединений)

  
if (($ret socket_listen($sock5)) < 0) {
    echo 
"Ошибка при попытке прослушивания сокета";
  }

  else {
    echo 
"Ждём подключение клиента\n";
  }


 


//Принимаем соединение с сокетом

    
if (($msgsock socket_accept($sock)) < 0) {
      echo 
"Ошибка при старте соединений с сокетом";
    }

 else {
      echo 
"Сокет готов к приёму сообщений\n";
    }


while(
true)
{
      echo 
'Сообщение от клиента:';
      if (
false === ($buf socket_read($msgsock1024))) {
        echo 
"Ошибка при чтении сообщения от клиента";       }
      else {
        echo 
$buf."\n"//Сообщение от клиента
      
}
  if (
'<policy-file-request/>' "\x00" === $buf) {
echo 
"ПОЛИТИКА ПРИШЛА!!!!!"
            
$crossdomain '<?xml version="1.0" encoding="UTF-8" ?><cross-domain-policy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.adobe.com/xml/schemas/PolicyFileSocket.xsd"><allow-access-from domain="*" to-ports="*" secure="false" /><site-control permitted-cross-domain-policies="all" /></cross-domain-policy>'."\x00";
            
socket_write($msgsock$crossdomainstrlen($crossdomain));
 
socket_close($sock);
echo 
"ПОЛИТИКА ОТПРАВЛЕНА!!!!!"
}
else{
echo 
$buf;
}

}
         

?>

что тут не так?

AlexCooper 18.07.2015 20:50

Проверьте фаервол, а лучше отключите его. + Проверьте права исполняемого пхп на выполнение ( 777 )

bifidokk 19.07.2015 10:07

так вы расскажите, что в итоге-то? php скрипт запускается без ошибок? клиент коннектится? что-то до скрипта доходит?

AlexCooper 19.07.2015 18:40

допишите после hander(params) в php, код, который создаст файл например в родительском каталоге. Узнаете был ли запуск интерпритатора php

bifidokk 20.07.2015 08:37

Цитата:

Сообщение от AlexCooper (Сообщение 1185091)
допишите после hander(params) в php, код, который создаст файл например в родительском каталоге. Узнаете был ли запуск интерпритатора php

а как можно не узнать, был ли запуск, если это по сути мини демон? его отдельно в консоли можно (нужно) запустить.

tattori 20.07.2015 13:55

все, спасибо парни , вроде как все получилось, доведу все до ума и выставлю исходники "Helloy world" для тех у кого та же проблема

bifidokk 21.07.2015 08:51

и название исходников лучше сделать правильными, а то как корабль назовете

tattori 21.07.2015 18:21

Цитата:

и название исходников лучше сделать правильными, а то как корабль назовете
Client.as и Server.php думаю подойдет)))) хотя думаю не сильно важны названия глевное что бы сам понимал


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

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