Модераторы: SoWa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> запустить флешку, работающую с сокетом, на компьют 
V
    Опции темы
THandle
Дата 22.9.2011, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: нет
Всего: 372



Всем привет.

Просмотрел некоторое количество информации в интернете, вроде бы все просто, но сделать то что мне надо не получается.

В общем ситуация следующая:
Есть флешка, она работает с Socket. Есть сервер, находится он на том же компе. Флешка к нему подключается. Из среды Flash всё замечательно, а вот из Explorer'а запускается Flash Player с ошибкой:

Цитата

SecurityError: Error #2010: Не допускается использование сокетов SWF-файлам в local-with-filesystem.
    at flash.net::Socket/internalConnect()
    at flash.net::Socket/connect()
    at payterminal::TLogger()
    at payterminal::TMainTerminalClass()
    at testterminal_fla::MainTimeline/frame1()


В интернете нашел, что нужно в File->Publish Settings сменить настройку Local playback security на Access network only.

Ок. Флешка запускается без ошибке, но шлет на сервер:
<policy-file-request/>

и коннект отваливается.
Насколько понял нужно прицепить(просто положить рядом?) crossdomain.
Но попробовав неколько, не получил никакого изменения результата.

Пожалуйста подскажите, как добиться требуемого сценария работы.
Спасибо.
PM   Вверх
SoWa
Дата 23.9.2011, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 2
Всего: 74



Посмотри Security.allowDomain тут.


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
THandle
Дата 27.9.2011, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: нет
Всего: 372



SoWa, пробывал и это, и передавать crossdomain с сервера(по рабочему и по 843 портам). Флешка может просто висеть, не кидая ошибок, но подключение по сокету не работает.
Был бы очень благодарен за рабочий пример, что где и как нужно вызвать, потому что все мои попытки ку желаемому результату не привели :(
PM   Вверх
THandle
Дата 3.10.2011, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: нет
Всего: 372



Вопрос, к сожалению, так и не решен. Не получается сделать ни одним из найденных в интернете способов =(
PM   Вверх
THandle
Дата 22.10.2011, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: нет
Всего: 372



Проблема решена. Описание решения:

Пусть наш сервер написан на Delphi(это просто пример), в нем есть ServerSocket, который открывается при запуске сервера, и висит в ожидании запросов от клиентов, в данном случае, от нашей флешки. Обработка происходит как-то так:
Код

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
  s,  Answer: String;
begin
  s := Socket.ReceiveText;
  Memo1.Lines.Add(s);
  Memo1.Lines.Add(Socket.RemoteAddress);
  Memo1.Lines.Add(Socket.RemoteHost);
  Memo1.Lines.Add(IntToStr(Socket.RemotePort));
  Memo1.Lines.Add('');
  // do something
  Socket.SendText(Answer);
end;


То есть, грубо говоря, в этом коде обрабатывается какой-то запрос от клиента s, а затем формируется(здесь не показано) и отсылается ответ Answer. Но это всё лирическое отступление.

На сервере, при его запуске, должен быть открыт на прослушивание еще один сокет, висящий на порте 843. На него будет приходить запрос файла политик(crossdomain) для нашей флешки.
При открытии во Flash Player, наша флешка будет посылать запрос по порту 843 следующего вида:

<policy-file-request/>

Наш сервер должен адекватно среагировать на данный запрос, то есть послать файл crossdomain.
В нашем тестовом сервере это будет выглядеть как-то так:
Код


procedure TForm1.ServerSocket2ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
  s: String;
  SL: TStringList;
begin
  s := Socket.ReceiveText;
  if Pos('<policy-file-request/>', s) <> 0 then
  begin
    SL := TStringList.Create;
    try
      SL.LoadFromFile('crossdomain.xml');
      Socket.SendText(SL.Text);
      ServerSocket2.Close;
    finally
      ServerSocket2.Open;
      SL.Free;
    end;
  end;
end;


Сокет после отправки файла crossdomain должен закрывать своё соединение. Но затем снова его открываем, чтобы при случае флешка могла переподключиться.
Файл crossdomain.xml может выглядеть как-то так:
Код

<?xml version="1.0"?>
<cross-domain-policy>
    <allow-access-from domain="*" to-ports="*" meta-policy="master-only"/>
</cross-domain-policy>


PM   Вверх
mansoff
Дата 26.2.2013, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 5.12.2012

Репутация: нет
Всего: нет



У меня похожая проблемма, не могу заставить приложение съесть этот crossdomain,
Пробовал и отдельно демона запускать на 843 порт который только отсылает policy-file XML и на сервере отслеживать str.contains("<policy-file-request/>"), но после отсылки клиенту XML'a приходит пустая строка и сокет отваливаентся.

Вы говорите, что:

Код

Сокет после отправки файла crossdomain должен закрывать своё соединение. 

У меня кстати получется чуть-чуть наоборот, сервер закрывает соединение, тк клиент успевает отослать строку нулевой длинны, и по Exception закрывается сокет соединение
Код

Но затем снова его открываем, чтобы при случае флешка могла переподключиться.


А где его снова открывать, на сервере или во флэше?
И как можно переоткрыть уже закрытое соединение?
Можете чуть подробнее разложить?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Flash"
AlDev
SoWa
  • Если вы хотите предложить кому-либо работу, то пишите или в личку, или оставляйте сообщения в специально предназначеном для этого форуме "Объявления о найме специалистов"
  • Один вопрос - одна тема. Не надо переходов от одного вопроса к другому.
  • Если вы хотите показать какой-нибудь ваш мульт, причём показать, а не предоставить исходник, то вам сюда
  • Вопросы про программирование на ActionScript 1,2 (Flash 8 и более ранние версии) пишите в форуме ActionScript 1,2
  • Вопросы по разработке интернет-приложений на Flex и вопросы по MXML пишите в раздел Flex
  • Смотрим в будущее. ActionScript 3 обсуждается в форуме ActionScript 3
  • Новости из мира Flash.
  • New! [code=ascript][/code] - подсветка ActionScript + wikipedia help

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, AlDev, SoWa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Flash | Следующая тема »


 




[ Время генерации скрипта: 0.1300 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.