flex air 监测网络状态

flex air 监测网络状态

检测网络连接更改

监听事件方法

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);

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值