PDA

Просмотр полной версии : XMLSocket и policy-file


EndoCrinologist
26.12.2012, 18:33
Уже много я изрыл интернет, но так и не нашел подробной статьи о том, как на флешке устроить нормальное соединение с сервером (из браузера) через сокеты. После некоторых попыток "соединиться", я еще порыскал в инете и нашел информацию про некую политику безопасности в виде xml-файла. И теперь между мной и моим проектом по созданию онлайн чата-бродилки встал этот глобальный вопрос: как нормально настроить policy-file и соединиться через сокеты с домашним сервером на денвере (локальный сайт socket.ru)?

Добавлено через 1 минуту
вот эта штука crossdomain.xml:
<?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="8080" />
</cross-domain-policy>

Добавлено через 4 минуты
И такой маленький вопросец. Эта штука:
Security.loadPolicyFile("xmlsocket://socket.ru:8080");
будет работать на Flash 8?

Добавлено через 6 минут
И такой еще вопросец: какой код может помочь флешке воспользоваться файлом политики безопасности, чтобы он смог всё таки подключиться к socket.ru?

dark256
26.12.2012, 19:01
1. Вот нормальный незамороченный кросс-доменй
<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*" to-ports="*"/>
</cross-domain-policy>

2. Под 9-ку скомпилировать совсем нельзя?

3. Флэшка без всякой сторонней помощи к СВОИМ политикам БЕЗОПАСНОСТИ подключается....

С помощью какого кода я могу тратить деньги с запароленной кредитки ген.дира?.... Нонсенс.

EndoCrinologist
26.12.2012, 19:37
а последний вопрос к чему?:)

Добавлено через 1 минуту
пытался у становить на нетбук 9ку, но какой-то сбой произошел.....

Добавлено через 9 минут
кстати, вопрос про хосты и порты.. Для сайта на денвере в xmlsocket.connect что прописывать? socket.ru и 8080? или 127.0.0.1 и 8080?

dark256
27.12.2012, 01:15
У меня там не удается снести 11-й......... А уж 9-ку.........

Если локальный серв.... то... имхо socket.ru вам точно не нужен. Если у вас конечно же локальный DNS не развернут с соотв "маршрутизацией"

И еще вопрос - вы все это пишете на НЕТБУКЕ?????
Я так понимаю - макдональдс, гамбургеры, фри, то-сё?
Что за....

EndoCrinologist
27.12.2012, 10:51
Нет, макдоналдса нету :) Точнее, есть, но я не хожу :) Просто у меня этот нетб рабочий) В универе я учусь.... :)
Такой вопрос: Вот у меня есть код первого кадра на стороне клиента с соответствующими полями и кнопкой:
btn.onPress = function():Void{
stt = "Начало..."; // строка предварительного статуса
o_ip = i_ip; // ввожу хост в i_ip, значение передается в o_ip
o_port = i_port; // ввожу порт в i_port, значение передается в o_port

var socket:XMLSocket = new XMLSocket();

socket.onConnect = function (success:Boolean) {
if (success) {
stt = "Арбракадабра!";
statustext.text = "Соединился";
} else {
stt = "Fail...";
statustext.text = "Ошибка в onConnect";
}
}
if (!socket.connect(o_ip, o_port)) {
stt = "";
statustext.text = "Ошибка в connect";
} else {
statustext.text = "Попытка соединения...";
}

}

Я использовал командную строку и запустил через нее netstat, где мне указали ESTABLISH'ный хост:порт 127.0.0.1:1110. Пытаюсь подключиться к ним - ни в какую... У вас есть примерный код того, что должно быть на стороне сервера (PHP к примеру)? И какие использовать хост и порт для денверного?

Добавлено через 4 часа 26 минут
Разобрав пару десятков примеров, до меня потихоньку начинает доходить смысл существования сокетов... Когда я создал PHP сервер и SWF клиент и запустил их на localhost:010101, то на сервере произошло некое взаимодействие.. Сервер получил от флешки строку <policy-file-request/>, тот самый запрос файла политики безопасности.... Что мне делать? Вывести xml файл через ECHO? Или что? Черт... Нигде нет нормальной документации....

EndoCrinologist
27.12.2012, 16:43
Вот что-то стало проясняться... Но не могу понять - что дальше...

maxkar
27.12.2012, 21:28
А что дальше? Вам нужно сначала разобраться с сокетами. Что такое потоковый режим передачи сообщений. Затем разобраться с тем, как вы запускаете ваш сервер (зачем там header???). Потом исправить проблему выдачи policy file (у вас ведь security error вроде?). И сокет закрывать после выдачи policy file. Тогда оно может быть начнет работать.

здесь (http://www.flasher.ru/forum/showpost.php?p=1108077&postcount=12) есть пример сервера (на java, правда) и клиента (на as3). Пример там полностью рабочий. Основные моменты и логику работы оттуда можно взять.

P.S. backlog в listen - это не количество одновременных соединений. Это количество соединений в очереди на accept (т.е. еще не accept'нутых). Если этот предел достигнут, а accept не делается, во всех последующих попытках соединения с вашим сервером будет отказано сразу (connection refused).