Celeste :: 深蓝世纪 :: 技术专区

Welcome to Celesteteam CeTech!

« ActionScript3.0 Socket编程与Socket服务器断开,或者当服务器想与你断开的时候发消息给你重装系统后必须做的10件大事 »

ActionScript3.0 Socket编程处理使用Sockets时候引发的错误

处理使用Sockets时候引发的错误.

解决方法:
    使用try/catch处理I/O和EOF(end of file)错误.

讨论:
    Socket和XMLSocket类对错误的处理很类似.不如,当调用connect()方法的时候,在下面任何一个条件成立的情况下Socket和XMLSocket对象会抛出一个类型为SecurityError的错误.

* 该.swf未通过本地安全认证.
* 端口号大于655535.

    当调用XMLSocket对象的send()或者Socket对象的flush()的时候,如果socket还没有连接这两个方法都会抛出一个类型为IOError的错误.尽管你可以将send()或者flush()方法放入try/catch结构块中,你也不能依赖于try/catch结构块作为你应用程序的逻辑.更好的办法是,在调用send()或者flush()方法之前使用一个if语句首先判断一下Socket对象的connected属性是否为True.例如,下面的代码使用了if语句作为程序逻辑的一部分,当Socket对象当前不是连接状态就调用connectToSocketServer()方法.但是我们依然需要将flush()方法放到try/catch语句块中.通过使用try/catch语句块将flush()方法抛出的错误写入到日志中:

if ( socket.connected ) {
    try {
        socket.flush(  );
    }
    catch( error:IOError ) {
        logInstance.write( "socket.flush error\n" + error );
    }
}
else {
    connectToSocketServer(  );
}

    所有的Socket类的read方法都能够抛出EOFError和IOError类型的错误.当你试图读一个数据,但是没有任何可用数据将触发EOF错误.当你试图从一个已经关闭的Socket对象中对数据时将会抛出I/O错误.

    除了Socket和XMLSocket类的方法能够抛出的错误以外,这些类的对象还会分发错误事件.有两种基本的错误事件类型,他们分别由socketIOError和securityError错误引起.IOError事件为IOErrorEvent类型,当数据发送或接收失败触发该事件.SecurityError事件是SecurityErrorEvent类型,当一个Socket尝试连接一个服务器,但由于服务器不在安全沙箱范围之内或者端口号小于1024的时候触发该错误事件.

注意:这两种安全策略引起的错误都可以通过跨域访问策略文件解决.

copy from: http://hi.baidu.com/guoyq/blog/item/41e0c51301a304025aaf539b.html

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新留言

最近发表

Powered By Z-Blog 1.6 Final Build 60816

关于我们 | 服务项目 | 客户案例 | 联系我们 :: Copyright @ Celesteteam.com