Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 07.06.2008, 18:56
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 1  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
По умолчанию Нужна помощь в настройке Apache + PHP сокет + AS

Не могу понять как настроить апач, чтобы при попытке коннекта на 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!"); ничего не посылает либо ПХП ничего не возвращает =/ Самое удивительное то, что ПХП в любом случае лог не пишет (но если просто обратиться к нему из браузера, то лог будет создан)
Через браузер - секьюрити еррор...
__________________
Hell is the possibility of sanity

Создать новую тему   Часовой пояс GMT +4, время: 17:22.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
apache , crossdomain , security , socket

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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