- 浏览: 352925 次
- 性别:
- 来自: 上海
-
文章分类
最新评论
-
lliiqiang:
在功能上,由于flex不支持加载外来的类的反射机制,所以可以通 ...
Flex Module专题 -
迪伦少校:
工程报错呢?。。
关于DEGRAFA的简介 -
chwnchwn:
不错的东西
关于DEGRAFA的简介 -
lorry1113:
学习了,多谢!!!!
重写FLEX组件 -
cuixuxucui:
var str:String = "";v ...
AS3 Array学习笔记
一、引子是这样的,socket连接失败后需要重连接,只能再new一个新的socket,以前的不好使了。。。
暂时查不到原因,对于IOErrorEvent 和SecurityErrorEvent的派发也不是很清楚。。。
package
{
import flash.display.Sprite;
import flash.net.XMLSocket;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.SecurityErrorEvent;
public class XMLSocketTest extends Sprite
{
private var socket:XMLSocket=new XMLSocket();
public function XMLSocketTest()
{
socket.addEventListener( Event.CONNECT, onConnect );
socket.addEventListener(IOErrorEvent.IO_ERROR,onIOError);
socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR,onSecurityError);
socket.connect("192.168.1.100",8888);
}
private function onConnect( event:Event ):void
{
trace( "The send socket is now connected..." );
}
private function onIOError(e:IOErrorEvent):void
{
trace("errorrrrrrrrrrrr");
socket.close();
socket.connect("192.168.1.100",8888);
trace("reconnecting...");
}
private function onSecurityError(e:SecurityErrorEvent):void
{
trace("security error");
}
}
}
如上,在IOError事件里重新进行socket.connect(),貌似这个命令不再执行了,因为trace的时候只出现一次trace信息,另外,即使注释掉socket.close()那行效果也是一样。
二、查找socket安全问题相关资料,提到了一些重要信息:
1.请求crossdomain.xml:
socket在connect时会往服务器843端口发送一个字符串 "<policy-file-request/>"请求crossdomain.xml,3秒后取不到,就会查看自己swf中有没有使用Security.loadPolicyFile来加载这个文件,如果还是没有,就查看要连接的目标端口有没有这个文件。如果都没有,则会报securityError
参考Flash Socket通信的安全策略问题 843端口(转载)
2.另一个错误:
根据上面的资料,我用了第二种:Security.loadPolicyFile("http://www.1.com/crossdomain.xml");不过报了这样的错误:
错误: [strict] 将忽略 http://www.1.com/crossdomain.xml 处的策略文件,因为出现 Content-Type“application/octet-stream” 错误。请访问 http://www.adobe.com/go/strict_policy_files_cn 以解决此问题。
这是因为服务端将xml文件的Content-Type设置成了application/octet-stream:
<mime-mapping>
<extension>xml</extension>
<mime-type>application/octet-stream</mime-type>
</mime-mapping>
需要改为:
<mime-mapping>
<extension>xml</extension>
<mime-type>application/xml</mime-type>
</mime-mapping>
参考在flex里使用 loadPolicyFile 配置跨域组策略文件时报错
3.进一步查询得知,加载文件用的安全策略文件和socket通讯用的策略文件在flash player某个版本中,被分开处理了。。。。socket的请求必须要通过端口来获得这个策略文件。原文摘一下:
从一些官方的一些资料中了解了一下。以前的Flash Player无论你采用urlRequest的http请求方式或者xmlsocket socket方式,他们都共用一个安全策略文件。这个策略文件只要你放在主域的目录下就行了。而现在不行了,现在的策略文件如果你使用http请求方式那么需要把策略文件放在目录下面,如果你使用socket请求方式就必须通过socket端口来接收这个策略文件。
对应调用的方式为:
http请求——》Security.loadPolicyFile(“http://www.xxx.com/crossdomain.xml”)
socket或xmlsocket请求——》Security.loadPolicyFile(“xmlsocket://www.xxx.com:port”)
所以上述第二步中用的HTTP请求方式是无效的~
参考Flash Socket通信的安全策略问题 843端口(转载)
4.加载和socket通信策略文件的分开,具体是在flash player 9.0.124版本(Adobe在08年4月8日放出)。
在我们的socket通信之前,flash会使用一个验证socket来验证这个域的安全,得到回复后断开。然后才会连接我们自己的socket.这方面网上的资料挺多。
发表评论
-
白名单屏蔽字 unicode字符范围
2016-07-05 16:58 849(_word.unicode >= 0x2001 ... -
flash textfiled换行 以及\r和\n区别
2016-06-20 15:11 1958flash.text.TextField.wordWrap ... -
flash 字体
2016-05-20 17:35 7631.FTE和TLF的关系 http://zengr ... -
Flex Date对象与UTC之间的关系
2013-08-07 14:16 2388转自 Flex Date对象与UTC ... -
as3 数据结构array,object,dictionary用哪个
2011-12-29 16:43 4426今天在处理背包物品时,考虑是用Array还是dictionar ... -
CS5 中禁用SimpleButton
2011-12-09 11:48 1928需要在CS5中对一个SimpleButton设置禁用效果,即不 ... -
Event.FRAME_CONSTRUCTED
2011-12-07 19:07 2160_oPBox是个MovieClip,共3帧,其中第1帧有 ... -
使用拼接的属性来访问Object
2011-11-28 15:58 11111.VO:Objectt有这些属性: public ... -
ShareObject简记
2011-10-25 18:58 1062引用: _soundSO = Shared ... -
字符集学习笔记(二)
2011-10-21 14:08 1586参考http://www.discuz.net/thre ... -
字符集学习笔记(一)
2011-10-20 17:17 1620摘自http://bbs.9ria.co ... -
使用AS3帧代码控制动画
2011-10-17 14:26 3967美术同事出了一个资源,大致是这样的:四个角色形象动画,聚在一个 ... -
flash cs将一个MC变成BUTTON
2011-09-15 16:50 1833在FLASH CS中,设置一个MC的三帧名字分别为 ... -
flash中的in关键字
2011-09-08 18:10 1343in这个关键字挺有意思的: package { ... -
VerifyError: Error #1024: 发生堆栈下溢
2011-08-26 16:14 4616今天出现了奇怪的问题,RELEASE版本的背包操作总是报Ver ... -
TextField的高宽autosize
2011-08-17 14:25 3397var t_name:TextField = new Text ... -
FLASH注册点与中心点(转)
2011-08-16 10:23 4810http://space.flash8.net/space/? ... -
flashbuilder不同版本共用工作空间的问题
2011-08-02 13:36 2462今天因为项目需要,安装了FB4.5,当然原来的FB4.0没舍得 ... -
flashplayer内存管理
2011-07-29 11:18 4436参考Flash务实主义(五)——AS3的垃圾回收 ... -
从SVN上的FD项目上,构建FB项目
2011-07-28 15:18 3693说一下概况: 项目是一个FD(FlashDevelop ...
相关推荐
根据给定的文件信息,我们可以总结出嵌入式系统中手机光盘的客户常见问题解决方案,涉及的主题包括:更改手机的开关机动画、待机界面、屏幕保护图片、执行Java程序时的串口问题、Java程序执行问题、Socket通讯问题...
FlashPlayer播放器4.0的VC++源代码 FreeBird2011最初版(模仿飞鸽,可聊天+传文件) 该实例可进行局域网的聊天、一对多、多对一、和多对多的传送和续传,理论上这是我本人的实现目的,而且目前经测试已基本实现了...
FlashPlayer播放器4.0的VC++源代码 FreeBird2011最初版(模仿飞鸽,可聊天+传文件) 该实例可进行局域网的聊天、一对多、多对一、和多对多的传送和续传,理论上这是我本人的实现目的,而且目前经测试已基本实现了...
FlashPlayer播放器4.0的VC++源代码 FreeBird2011最初版(模仿飞鸽,可聊天+传文件) 该实例可进行局域网的聊天、一对多、多对一、和多对多的传送和续传,理论上这是我本人的实现目的,而且目前经测试已基本实现了...
FlashPlayer播放器4.0的VC++源代码 FreeBird2011最初版(模仿飞鸽,可聊天+传文件) 该实例可进行局域网的聊天、一对多、多对一、和多对多的传送和续传,理论上这是我本人的实现目的,而且目前经测试已基本实现了...
FlashPlayer播放器4.0的VC++源代码 FreeBird2011最初版(模仿飞鸽,可聊天+传文件) 该实例可进行局域网的聊天、一对多、多对一、和多对多的传送和续传,理论上这是我本人的实现目的,而且目前经测试已基本实现了...
解压后,开始找与通讯的类。一般搜索flash.net.Socke即可==send(param1, param2) #4CAF50==发送数据包的函数 public function send(param1:uint, param2:Array) : uint { var loc3_:* = null; var loc4_:* ...