易截截图软件、单文件、免安装、纯绿色、仅160KB

C++与Flex之间socket通信policy file request解决方案

C++winsocket服务端,Flex as3客户端。服务端Bind绑定IP127.0.0.1端口2020,在Flex中使用Socket.connect向服务器发起链接。当Flex在本地运行的时候能链接成功, 但是通过域名访问时出现Security错误, Error #2048
。并且在连接时, 服务端收到客户端发来的消息<policy-file-request/>
消息。
尝试解决:
上google搜索了若干资料,我看了良久也一知半解。
出现这个问题的原因是FlashPlayer有一个安全沙箱机制
。本地运行swf时,flashPlayer默认的安全策略是可以跨预访问的,可以查看Security.sandboxType属性值为localTrusted。然而在使用IP访问swf文件时,flashPlayer会认为这个文件是不安全的此时可以查看
Security.sandboxType的属性值为remote。此时需要在服务端放置策略文件,flashPlayer才会让swf链接到此服务器。
若干人的博客上都说需要名为crossdomain.xml
的文件放置到服务端HTTP的根目录下。文件内容为
<?xml version="1.0"?>
<cross-domain-policy>
<site-control permitted-cross-domain-policies="all"/>
<allow-access-from domain="*" to-ports="2020" />
</cross-domain-policy> 
  
我这么做了,但是没有任何效果。(我能确定策略文件被访问到了,因为文件中出现语法错误的时候Flex调试信息中还会报出警告。)于是我猜想这个方法也许是解决不能访问远程HTTP文件的的问题,而socket通信需要另外的方法。
然后在CSDN论坛上发现有人用JavaSocket和Flex通信出现同样问题,解决方案是服务端收到
<policy-file-request/>消息时,直接向客户端发送一条消息,内容就是上面的策略文件的xml
。我仿照做了,依然无效>_<
char szPolicy[1024] = "";
strcat_s(szPolicy, 1024, "<?xml version='1.0'?>");
strcat_s(szPolicy, 1024, "<cross-domain-policy>");
strcat_s(szPolicy, 1024, "<site-control permitted-cross-domain-policies='all'/>");
strcat_s(szPolicy, 1024, "<allow-access-from domain='*' to-ports='2020'/>");
strcat_s(szPolicy, 1024, "</cross-domain-policy>\0");
sockClient = m_sockListener.Accept(&addrClient);
if (sockClient.IsInvalid())
{
// accept failed


相关文档:

flex时序图示例

<?xml version="1.0" encoding="utf-8"?>
<!-- Simple example to demonstrate the DateTimeAxis class. -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>

import mx.collections.ArrayCollection;
......

some tips of flex compiler

flex library project : create swf , not swc  ,   code: -locale=en_US -directory=true -output=../bin/
create zh_CN language package : bin\compc -locale=zh_CN -source-path=frameworks/projects/framework/bundles/zh_CN/src -include-resource-bundles=collections,containers,controls,core,ef ......

Flex编译参数

Flex编译参数
accessible=true|false 是否具有可理解性(如为残疾人提供方便的性能)
actionscript-file-encoding | 设置文件编码,如Shitf_JIS
advanced | mxmlc -help advanced,如这样的高级参数
allow-source-path-overlap=true|false | 验证source-path中定义的路径是否出现重叠,出现互相包含的现象
as3=true|fa ......

flex与.net

本系列文章主要介绍了关于Flex与.NET结合开发中的一些互操作性,包括网络通信、数据加载、数据传输、文件传输、以及应用于Flex与.NET协作开发的通信网关开源项目FluorineFx的相关知识点。
     开源项目FluorineFx就是专门针对.NET平台与Flex通信提供的AMF协议通信网关,我们可以通过FluorineFx很方便 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号