检测网络连接更改
监听事件方法
NativeApplication.nativeApplication.addEventListener(Event.NETWORK_CHANGE,onNetworkChange);
此事件只是确定网络连接的状态发生改变,而不能告诉你网络是否可用。要进一步确定网络的可用性还需要下面的类。
检测 HTTP 连接
实现方法
var monitor:URLMonitor;
monitor = new URLMonitor(new URLRequest(‘http://www.adobe.com’));
monitor.addEventListener(StatusEvent.STATUS,announceStatus);
monitor.start();
function announceStatus(e:StatusEvent):void {
??? trace("Status change. Current status: " + monitor.available);
}
用于确定http链接是否可用,实际中还可以把URLRequest的请求方法设为HEAD,以避免下载整个页面。
通过实验发现,实际情况和文档里说的不一样,文档里说URLMonitor的pollInterval属性为0时(默认为0),则不定期轮询服务器,而仅在调用 start() 后和网络状态发生更改时立即轮询。但实际测试结果,当网络状态发生改变时,并不能触发状态改变事件,什么原因还不清楚。
最后的解决办法是,在上面的检测网络连接更改事件中创建URLMonitor实例并监听状态改变事件,然后调用start()方法,在状态改变事件里判断链接是否可用,进一步处理相关操作。实现代码如下:
private var monitor:URLMonitor;
NativeApplication.nativeApplication.addEventListener(Event.NETWORK_CHANGE,onNetworkChange);
public function onNetworkChange(event:Event):void{
trace("网络连接发生改变");
//监视网络状态
var url:URLRequest=new URLRequest(“要监测的网络地址”);
url.method = "HEAD";
monitor = new URLMonitor(url);
monitor.addEventListener(StatusEvent.STATUS,onMonitor);
monitor.start();
}
private function onMonitor(event:Event):void
??????????? {
??????????????? monitor.removeEventListener(StatusEvent.STATUS,onMonitor);
??????????????? trace("连接"+monitor.available);
??????????????? if(monitor.available){//网络连接可用
????????????? //处理联网操作
??????????????? }
??????????????? else
??????????????? {
???????????????????? //网络连接不可用,相关处理
??????????????? }
??????????? }
检测套接字连接
实现方法
socketMonitor = new SocketMonitor(‘www.adobe.com’,6667);
socketMonitor.addEventListener(StatusEvent.STATUS,socketStatusChange);
socketMonitor.start();
function announceStatus(e:StatusEvent):void {
?? trace("Status change. Current status: " + socketMonitor.available);
}