zoukankan      html  css  js  c++  java
  • AIR检测网络

        package com.juyou.util.net  
        {  
            import flash.events.StatusEvent;  
            import flash.net.URLRequest;  
              
            import air.net.URLMonitor;  
            /** 
             * 网络监听 
             *  
             */  
            public class NetChecker  
            {  
                private static var request:URLRequest = new URLRequest("http://www.baidu.com");  
                private static var monitor:URLMonitor;  
                /**检测间隔时间*/  
                public static var _interval:Number = 10000;  
                private static var available:Boolean = true;  
                private static var observerList:Vector.<INetObserver> = new Vector.<INetObserver>();  
                public function NetChecker()  
                {  
                      
                }  
                /** 
                 * 注册观察者对象 
                 * @param obj    观察者对象 
                 */  
                public static function attach(obj:INetObserver):void  
                {  
                    if(observerList.indexOf(obj) == -1)  
                    {  
                        observerList.push(obj);  
                    }  
                }  
                  
                /** 
                 * 删除观察者对象 
                 * @param obj    观察者对象 
                 */  
                public static function detach(obj:INetObserver):void{  
                    var index:int = observerList.indexOf(obj);  
                    if(index == -1)  
                        return;  
                    observerList.splice(index,1);  
                }  
                  
                /** 
                 * 通知所有注册的观察者对象 
                 */  
                private static function nodifyObservers():void{  
                    for each(var obj:INetObserver in observerList)  
                    {  
                        obj.updateNetAvailable(available);  
                    }  
                }  
                  
                /** 
                 * 开始监听网络状况  
                 *  
                 */  
                public static function monitorNetwork():void  
                {  
                    if(!monitor)  
                        monitor = new URLMonitor(request);  
                    monitor.pollInterval = _interval;  
                    monitor.addEventListener(StatusEvent.STATUS,onStatusHandler);  
                    monitor.start();  
                }  
                  
                /** 
                 * 设置监听网络间隔  
                 * @param val 
                 *  
                 */  
                public static function set interval(val:Number):void  
                {  
                    if(_interval == val)return;  
                    _interval = val;  
                    if(monitor && monitor.running)  
                    {  
                        monitor.stop();  
                        monitor.pollInterval = _interval;  
                        monitor.start();  
                    }  
                }  
                  
                public static function get interval():Number  
                {  
                    return _interval;  
                }  
                  
                /** 
                 * 停止监听网络状态  
                 *  
                 */  
                public static function stopMonitor():void  
                {  
                    if(monitor)  
                        monitor.stop();  
                }  
                  
                /** 
                 * 判断当前网络是否可用  
                 * @return  
                 *  
                 */  
                public static function get networkAvailable():Boolean  
                {  
                    return available;  
                }  
                  
                private static function onStatusHandler(e:StatusEvent):void  
                {  
        //          trace( ">>onStatusEvent::evt.code=" + e );  
                    if(e.level == "status")  
                    {  
                        var flag:Boolean = false;  
                        if(monitor.available && !available)  
                        {  
                            trace("网络已连接");  
                            available = true;  
                            flag = true;  
                        }  
                        else if(!monitor.available && available)  
                        {  
                            available = false;  
                            trace("没有检测到网络");  
                            flag = true;  
                        }  
                          
                        if(flag)  
                        {  
                            nodifyObservers();  
                        }  
                    }  
                          
                }  
                  
            }  
        }  
    
        package  
        {  
            public interface INetObserver  
            {  
                function updateNetAvailable(ava:Boolean):void;  
            }  
        }  
    
  • 相关阅读:
    人月神话--没有银弹软件工程中的根本和次要问题(No Silver Bullet Essence and Accident in Software Engineering)
    人与人之间最难得是合作,组件与组件之间最难得时协作。
    关注软件构架与软件构架师
    软件产品本质是逻辑或者说事概念产品
    为什么需求分析离不开系统逻辑模型
    MySQL中varchar最大长度是多少?【转】
    WCF自定义授权[转自小庄的博客]
    PetShop的系统架构设计[转]
    百练 2734 十进制到八进制 解题报告
    百练 2818 密码
  • 原文地址:https://www.cnblogs.com/skybdemq/p/4073030.html
Copyright © 2011-2022 走看看