| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Flash > запустить флешку, работающую с сокетом, на компьют |
| Автор: THandle 22.9.2011, 20:50 | ||
| Всем привет. Просмотрел некоторое количество информации в интернете, вроде бы все просто, но сделать то что мне надо не получается. В общем ситуация следующая: Есть флешка, она работает с Socket. Есть сервер, находится он на том же компе. Флешка к нему подключается. Из среды Flash всё замечательно, а вот из Explorer'а запускается Flash Player с ошибкой:
В интернете нашел, что нужно в File->Publish Settings сменить настройку Local playback security на Access network only. Ок. Флешка запускается без ошибке, но шлет на сервер: <policy-file-request/> и коннект отваливается. Насколько понял нужно прицепить(просто положить рядом?) crossdomain. Но попробовав неколько, не получил никакого изменения результата. Пожалуйста подскажите, как добиться требуемого сценария работы. Спасибо. |
| Автор: SoWa 23.9.2011, 09:22 |
| Посмотри Security.allowDomain http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/system/Security.html?filter_flex=4.1&filter_flashplayer=10.2&filter_air=2.6. |
| Автор: THandle 27.9.2011, 13:58 |
| SoWa, пробывал и это, и передавать crossdomain с сервера(по рабочему и по 843 портам). Флешка может просто висеть, не кидая ошибок, но подключение по сокету не работает. Был бы очень благодарен за рабочий пример, что где и как нужно вызвать, потому что все мои попытки ку желаемому результату не привели :( |
| Автор: THandle 3.10.2011, 10:43 |
| Вопрос, к сожалению, так и не решен. Не получается сделать ни одним из найденных в интернете способов =( |
| Автор: THandle 22.10.2011, 22:12 | ||||||
| Проблема решена. Описание решения: Пусть наш сервер написан на Delphi(это просто пример), в нем есть ServerSocket, который открывается при запуске сервера, и висит в ожидании запросов от клиентов, в данном случае, от нашей флешки. Обработка происходит как-то так:
То есть, грубо говоря, в этом коде обрабатывается какой-то запрос от клиента s, а затем формируется(здесь не показано) и отсылается ответ Answer. Но это всё лирическое отступление. На сервере, при его запуске, должен быть открыт на прослушивание еще один сокет, висящий на порте 843. На него будет приходить запрос файла политик(crossdomain) для нашей флешки. При открытии во Flash Player, наша флешка будет посылать запрос по порту 843 следующего вида: <policy-file-request/> Наш сервер должен адекватно среагировать на данный запрос, то есть послать файл crossdomain. В нашем тестовом сервере это будет выглядеть как-то так:
Сокет после отправки файла crossdomain должен закрывать своё соединение. Но затем снова его открываем, чтобы при случае флешка могла переподключиться. Файл crossdomain.xml может выглядеть как-то так:
|
| Автор: mansoff 26.2.2013, 19:12 | ||||
| У меня похожая проблемма, не могу заставить приложение съесть этот crossdomain, Пробовал и отдельно демона запускать на 843 порт который только отсылает policy-file XML и на сервере отслеживать str.contains("<policy-file-request/>"), но после отсылки клиенту XML'a приходит пустая строка и сокет отваливаентся. Вы говорите, что:
У меня кстати получется чуть-чуть наоборот, сервер закрывает соединение, тк клиент успевает отослать строку нулевой длинны, и по Exception закрывается сокет соединение
А где его снова открывать, на сервере или во флэше? И как можно переоткрыть уже закрытое соединение? Можете чуть подробнее разложить? |