Показать сообщение отдельно
Старый 07.05.2007, 16:28
yana_flash вне форума Посмотреть профиль Отправить личное сообщение для yana_flash Найти все сообщения от yana_flash
  № 1  
Ответить с цитированием
yana_flash

Регистрация: Oct 2003
Сообщений: 74
По умолчанию Загрузка картинки из локальной сети

Пишу приложение на flex. Копии приложения будут располагаться на нескольких выделенных компах в локалке (назовем их серверами). Пользователь должен, зная адрес любого из серверов, зайти на него (через браузер) и запустить мою программу. Программа же, имея список IP всех серверов, должна выдать его пользователю и позволить, обратившись к любому из них, установить с данным сервером сокет-соединение и скачать (не по сокету, а по http) лежащую сервере картинку. Вроде бы не сложно. Сокеты отлично коннектятся и программа по ним обменивается информацией с серверами. На каждом из серверов лежит crossdomain.xml:
Код:
<?xml version="1.0"?>
<!-- http://www.foo.com/crossdomain.xml -->
<cross-domain-policy>
  <allow-access-from domain="*" />
</cross-domain-policy>
Но почему-то когда я указываю полный адрес картинки, даже той, которая лежит в каталоге, откуда запущено флекс-приложение, мне выдается ошибка:
[IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2035: URL Not Found. URL: 111.222.333.444/flash/map.jpg"]

Вот код, которым я гружу картинку:
Код:
public var urlHome:String = "111.222.333.444";
...
Security.loadPolicyFile("http://"+urlHome+"/crossdomain.xml");
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
loader.contentLoaderInfo.addEventListener(Event.OPEN, openHandler);
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler);
loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
loader.contentLoaderInfo.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);

loader.load(new URLRequest("http://"+urlHome+"/flash/map.jpg"));
Если же я заменяю
loader.load(new URLRequest("http://"+urlHome+"/flash/map.jpg"));
на
loader.load(new URLRequest("map.jpg"));
картинка с сервера прекрасно грузится. Если в строке браузера я ввожу "111.222.333.444/flash/map.jpg" - картинка замечательно загружается в браузер.

В то же время сокет прекрасно коннектится с сервером по IP, прописанному в переменной urlHome.

Что я делаю неправильно? Как сделать так, чтобы картинка считывалась с любого сервера, на который загружен crossdomain.xml ?


Последний раз редактировалось yana_flash; 07.05.2007 в 16:31.