Код 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_INET, SOCK_STREAM, SOL_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($sock, 5)) < 0) {
echo "Ошибка при попытке прослушивания сокета";
}
else {
echo "Ждём подключение клиента\n";
}
//Принимаем соединение с сокетом
if (($msgsock = socket_accept($sock)) < 0) {
echo "Ошибка при старте соединений с сокетом";
}
else {
echo "Сокет готов к приёму сообщений\n";
}
while(true)
{
echo 'Сообщение от клиента:';
if (false === ($buf = socket_read($msgsock, 1024))) {
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, $crossdomain, strlen($crossdomain));
socket_close($sock);
echo "ПОЛИТИКА ОТПРАВЛЕНА!!!!!";
}
else{
echo $buf;
}
}
?>
что тут не так?