С внешней программой флэш может обмениваться данными тремя способами:
1. ExternalInterface.
Данный способ применим только для обмена данными
между флэш-контролом и приложением, которое его же и хостит.
Простейший пример - флэш-контрол в браузере. В этом примере флэш может "обмениваться данными с браузером" в том смысле, что можно таким образом задействовать из флэша движок браузера в части исполнения JS.
Можно написать свою оболочку. ATL, MFC, C# - легко, или даже C++ если не пугает ручная реализация COM-интерфейсов, моникеров и пр. радости. Исходников на эту тему море. Да, и Dlphi, конечно, тоже.
Минусы: требует наличия регистрированного флэш-контрола в системе. Стандалоны - мм.. возможны, но тут есть ряд принципиальных вопросов, касательно соблюдения лицензионных соглашений при таком использовании флэш-контрола. Самостоятельная его регистрация (когда вы его и поставляете вместе с программой, надеясь, что Адоб спит) тоже ничего хорошего не предвещает, ибо чаще всего требует админских прав юзера.
2. Сокет. Классический вариант организации обмена данными между двумя
различными приложениями. В сторонней проге заводится сокет сервер, что в принципе не проблема ни для Java, ни для C (и иже с ним) и т.д. Во флэше коннектимся к этому серверу штатным классом и обмениваемся данными.
Минусы: безопасность и ее грамотная, порой, тонкая настройка на отдельно взятом компе. Антивирусное ПО или местный сисадмин могут вставить хороший фитиль. Спасает всеобщая эйфория - "со мной этого никогда не случится".
3. LocalConnection. (см. ссылку silin'a). Нечто наподобие сокета. Можно обмениваться данными с другим приложением. Обмен идет через объект FileMapping (расшаренная именованная область в памяти). Собственно, сам файл-маппинг создает флэш, сторонняя прога к нему просто подрубается в нужный момент.
Минусы: 40к - ограничение на запись/чтение за "один присест". Могут быть неприятности, если юзаются обычные локалконекшены в параллель к вашему. Так же существует проблема безопасности, но в этом стлучае преодолимая, к слову. Формат обмена данными AMF - нужен сериализатор/десериализатор.
...
Вы и вправду хотите написать сервер на флэш? Это несерьезно. Флэш -это всегда клиент. Делать сервер на С .... и прикручивать к нему флэш? Для чего?
...
Да, и прекратите, пожалуйста, заниматься мультипостингом. Есть кнопка "Изменить".
Add:
Хостинг контрола без регистрации и админских прав юзера при запуске проги вполне возможен. Возможно даже грузить контрол из ресов ехе и свф брать из ресов. Т.е. создать подобие автономного проектора более чем реально. Даже без ATL и MFC, на чистом С (много кода - но реально). Приплести Qt - и даже кроссплатформу можно реализовать.
Однако, лицензионные соглашения о распространении и использовании плеера, а так же рантайма от адоба вообще, все же требуют, чтобы вы сообщили адобу о вашем проекте и получили индульгенцию на такое его использование. Это лично моя интерпретация соглашений, возможно, я, не будучи специалистом в области юриспруденции, ошибаюсь, и все проще.
Добавлю, что вопрос с лицензией - животрепещющий, много народа реализовали хостинг плеера, и даже юзают его в своих действующих проектах, знаю, ибо копал, но никто не знает, законно это или нет. Сам адоб предпочитает ограничиться следующей формулировкой:
Цитата:
Если вы используете любой из компонент компании Adobe, который мы
распространяем под любым из своих лицензионных соглашений (даже если это
бесплатная лицензия) как внешний, т.е. ссылаетесь на него так, чтобы
пользователь мог скачать его самостоятельно, или распространяете в комплекте
как OEM партнер, подписав соответствующее соглашение на сайте - это
легально.
Если вы используете компонент в качестве элемента собственной программы и
потом распространяете свою программу на собственных лицензионных условиях
(бесплатно или за деньги - это уже не важно), то это нарушение лицензионных
прав, т.к. вы фактически подменяете условия нашего лицензионного соглашения
своим.
Таким образом вы должны строить свою программу так, чтобы она не содержала
наш плеер внутри, а использовала его как внешний модуль, который
пользователь должен установить отдельно и тем самым подтвердить наше
лицензионное соглашение.
|
Взято из ответа Российского представительства Adobe.
И,собственно,
http://www.adobe.com/ru/products/cli...agreement.html