Не могу понять как настроить апач, чтобы при попытке коннекта на 843 порт отдавался crossdomain.hml =(
В httpd.conf добавил Listen 843
в корневой директории лежит такой вот пхп:

Код:
<?php
// set some variables
$host = "127.0.0.1";
$port = 843;
$log = fopen("socket_log.txt", "w");
fwrite($log, "Socket log: status 0\n");
fclose($log);
// don't timeout!
set_time_limit(0);
// create socket
$socket = socket_create(AF_INET, SOCK_STREAM, 0);
if (!$socket) {
$log = fopen("socket_log.txt", "w");
fwrite($log, "Could not create socket\n");
fclose($log);
exit();
}
// bind socket to port
$result = socket_bind($socket, $host, $port);
if (!$result) {
$log = fopen("socket_log.txt", "w");
fwrite($log, "Could not bind to socket\n");
fclose($log);
exit();
}
// start listening for connections
$result = socket_listen($socket, 3);
if (!$result) {
$log = fopen("socket_log.txt", "w");
fwrite($log, "Could not set up socket listener\n");
fclose($log);
exit();
}
// accept incoming connections
// spawn another socket to handle communication
$spawn = socket_accept($socket);
if (!$spawn) {
$log = fopen("socket_log.txt", "w");
fwrite($log, "Could not accept incoming connection\n");
fclose($log);
exit();
}
// read client input
$input = socket_read($spawn, 1024);
if (!$input) {
$log = fopen("socket_log.txt", "w");
fwrite($log, "Could not read input\n");
fclose($log);
exit();
}
// clean up input string
$input = trim($input);
// reverse client input and send back
$output = "<?xml version=\"1.0\"?>
<!DOCTYPE cross-domain-policy SYSTEM \"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd\">
<cross-domain-policy>
<allow-access-from domain=\"*\" to-ports=\"843,1234\" />
</cross-domain-policy>";
$out = socket_write($spawn, $output, strlen ($output));
if (!$out) {
$log = fopen("socket_log.txt", "w");
fwrite($log, "Could not write output\n");
fclose($log);
exit();
}
// close sockets
//socket_close($spawn);
//socket_close($socket);
?>
А так выглядит класс, который должен к нему коннектится:

Код:
package
{
/**
* ...
* @author wvxvw
*/
import flash.events.IOErrorEvent;
import flash.events.ProgressEvent;
import flash.events.SecurityErrorEvent;
import flash.net.Socket;
import flash.utils.ByteArray;
import flash.external.ExternalInterface;
import flash.system.Security;
import flash.events.Event;
public class PNGSocket
{
private var sc:Socket;
private var ba:ByteArray;
public function PNGSocket()
{
Security.loadPolicyFile("xmlsocket://127.0.0.1/sock_crossdomain.php");
sc = new Socket('127.0.0.1', 843);
sc.connect('127.0.0.1', 843);
sc.addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler);
sc.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
sc.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
sc.addEventListener(Event.CONNECT, connectHandler);
}
public function sendPNG(b:ByteArray = null):void
{
ba = new ByteArray();
}
private function socketDataHandler(evt:ProgressEvent):void
{
trace('data recieved: ' + evt);
ExternalInterface.call('alert', 'DATA');
}
private function ioErrorHandler(evt:IOErrorEvent):void
{
trace('connection error: ' + evt.text);
ExternalInterface.call('alert', 'IO ERROR');
}
private function securityErrorHandler(evt:SecurityErrorEvent):void
{
trace('security error: ' + evt.text);
ExternalInterface.call('alert', 'SECURITY ERROR\r'+evt.text);
}
private function connectHandler(evt:Event):void
{
trace('connection established: ' + evt);
ExternalInterface.call('alert', 'CONNECTION');
sc.writeUTF("Hi!");
}
}
}
Врезультате, тестируя из ФД получаю такой вот оутпут:
connection established: [Event type="connect" bubbles=false cancelable=false eventPhase=2] // sc.writeUTF("Hi!"); ничего не посылает либо ПХП ничего не возвращает =/ Самое удивительное то, что ПХП в любом случае лог не пишет (но если просто обратиться к нему из браузера, то лог будет создан)
Через браузер - секьюрити еррор...