|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
[+1.3 18.03.10]
Регистрация: Mar 2010
Сообщений: 45
|
Соединение flash-клиента и java-приложения.
Привет всем.
Первая просьба, пожалуйста не отправляйте в поиск Во всех темах по этому вопросу всех отправляют в поиск, а ответа так и нету Собственно вопрос: есть flash-клиент (не AIR), есть java-приложуха, запускается webstart'ом. Между ними надо установить соединение для обмена данными в... ммм... ну в бинарном виде короче, т.е. не какието xml-структурированные наборы а конкретно bytearray. Соединение создаю использую Socket, не вижу других способов - если есть, буду благодарен. Собственно по коду вопросов нет, но вываливается Error #2048: Security sandbox violation. Соединение происходит (это видно тем-же netstat'ом) и просто реджектится из-за каких-то ограничений безопасности. Советуют загружать crossdomain - я загружаю. используя Security.loadPolicyFile() и Security.AllowDomain(); да и просто лежит в корне. В самом кроссдомейнике прописаны все домены и все порты. Коннектится к java-приложухе пробовал и по localhost и по ip-локальной сети. Без разницы. Посоветуйте плиз, что делать теперь? Неужели нет никакого способа установить соединение? |
|
|||||
Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
|
Если crossdomain лежит в корне, в нем все правильно написано и он доступен, должно быть все хорошо. Скиньте ссылку на кроссдоменник.
__________________
#flasher@irc.trg.ru:6667 |
|
|||||
Цитата:
Цитата:
__________________
...вселенская грусть |
|
|||||
[+1.3 18.03.10]
Регистрация: Mar 2010
Сообщений: 45
|
Спасибо за ответы, буду пробовать.
crossdomain.xml выглядит следующим образом: |
|
|||||
Убедитесь, что сервер правильно отдает файл политик:
Когда проигрыватель Flash Player запрашивает файл политики, он всегда передает следующую строку после установки подключения: Получив эту строку, сервер может передать файл политики. Запрос проигрывателя Flash Player всегда заканчивается нулевым байтом, и ответ сервера также должен заканчиваться нулевым байтом. Не пытайтесь использовать одно и то же подключение и для запроса файла политики, и для основного подключения. Разорвите подключение после передачи файла политики. Если этого не сделать, проигрыватель Flash Player разрывает подключение, установленное для проверки файла политики, и только после этого устанавливает основное подключение. |
|
|||||
Регистрация: May 2006
Адрес: Germany
Сообщений: 74
|
Правильно, Вашему ява-коду вначале приходит запрос от клиента:
На него нужно ответить чем-то вроде: <?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> \0 Можно еще как вариант текст наверху отдавать через порт 843, тогда не будет задержки в 3 секунды. Но не для всех будет работать (из корп. сетей), так что лучше все-таки и по основному сокету уметь ответить. Если сделать файл mm.cfg: и установить debug flash player, то можно будет подробнее посмотреть в файлах policyfiles.txt и flashlog.txt. А файл crossdomain.xml для сокетов рояли не играет. И смысл всей этой лабуды в том, чтобы если есть корпоративная сеть и какой нибудь работник из нее серфает и открывает интернетную страницу с вражеским баннером, то не дать тому банеру открывать сокетные соединения к mail-серверу или другим серверам внутри этой корпоративной сети. Последний раз редактировалось afarber; 08.10.2010 в 00:39. |
|
|||||
[+1.3 18.03.10]
Регистрация: Mar 2010
Сообщений: 45
|
Спасибо за обстоятельные ответы. Хотелось бы уточнить некоторые детали:
1. Запрос <policy-file-request/> флэш-плеер отправляет сам, автоматически? 2. Отвечать на него надо уже, соответственно ручками. Т.е. писать в сокет? 3. Пытаемся читать после установления соединения из сокета на стороне ява-приложения, но ничего нет. Может ли так быть, что этот запрос генерируется только когда флэш запускается НЕ локально, а при локальном запуске такого запроса просто не происходит? update: запустил удаленно. всё равно ява-приложуха нм сокете никаких данных не видит Последний раз редактировалось Alex_YAROST_22; 11.10.2010 в 13:10. |
|
|||||
Регистрация: Jul 2006
Сообщений: 170
|
тут, я думаю, можно найти решение: http://www.broculos.net/tutorials/ho...er/20080320/en
|
|
|||||
1- да
2- да 3- да, всегда именно так и есть Цитата:
ЗЫ Туториал, приведенный tikhop, на 100% рабочий, проверено =)
__________________
...вселенская грусть |
|
|||||
[+1.3 18.03.10]
Регистрация: Mar 2010
Сообщений: 45
|
Пока не получается. Хотелось бы уточнить, кто может достоверно сказать - срабатывает ли событие сокета onData ,когда на сокет приходит текст crossdomain-ника? Или он где-то тонет в глубинах реализации сокета? (здесь у меня неправильный синтаксис ответа был. надо быть внимательным)
Добавлено через 19 часов 52 минуты Хорошая тема, хорошее решение Всё получилось, tikhop и afarber особое спасибо. Туториал приведенный tikhop'ом рабочий - 100% Единственное замечание, выполнять Security.loadPolicyFile() не обязательно! Со стороны клиента необходимо 1. выполнить Socket.connect("127.0.0.1",15556); //предположим это порт где у нас крутится полиси-сервер, т.е. "отвечалка" на <policy-file-request/> 2. выполнить Socket.connect("127.0.0.1",15555); //а это порт по которому идет основная работа с приложением. Суть в том, что просто при попытке установки соединения запрос безопасности будет отправлен автоматом и если на него правильно ответить, то след. коннект будет выполнен уже без проблем. А, вот еще что, разновсякие "localhost" "www.vasya.com" не резольвятся при выполнении socket.connect() так что только IP-адрес! Последний раз редактировалось Alex_YAROST_22; 14.10.2010 в 11:31. |
Часовой пояс GMT +4, время: 17:50. |
|
« Предыдущая тема | Следующая тема » |
Теги |
java , security error , socket |
|
|