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

本文介绍了C++ WinSocket服务器与Flex AS3客户端在进行socket通信时遇到的安全问题。当Flex通过域名访问,由于FlashPlayer的安全沙箱机制,需要在服务器端提供crossdomain.xml策略文件。作者尝试了多种方法,最终发现关键在于在收到后,服务端需关闭当前socket连接,以便FlashPlayer自动重连并完成策略文件验证。通过这一解决方案,问题得到解决。
摘要由CSDN通过智能技术生成

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的根目录下。文件内容为

  

我这么做了,但是没有任何效果。(我能确定策略文件被访问到了,因为文件中出现语法错误的时候Flex调试信息中还会报出警告。)于是我猜想这个方法也许是解决不能访问远程HTTP文件的的问题,而socket通信需要另外的方法。

然后在CSDN论坛上发现有人用JavaSocket和Flex通信出现同样问题,解决方案是服务端收到 <policy-file-request/>消息时,直接向客户端发送一条消息,内容就是上面的策略文件的xml 。我仿照做了,依然无效>_<

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值