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

AIR检测网络的更多相关文章

  1. Android检测网络是否正常代码!

    在Android开发中,如果该应用程序需要连接网络请求,那么最好我们先做一个检测网络是否在线的判断,否则程序容易出现卡死或FC等Bug,应该判断如果手机离线则弹出提示让用户检查网络,如果正常则继续执行 ...

  2. iOS中使用 Reachability 检测网络

    iOS中使用 Reachability 检测网络 内容提示:下提供离线模式(Evernote).那么你会使用到Reachability来实现网络检测.   写本文的目的 了解Reachability都 ...

  3. iOS开发——网络篇——数据安全(MD5),HTTPS,检测网络状态

    一.数据安全 1.提交用户的隐私数据一定要使用POST请求提交用户的隐私数据GET请求的所有参数都直接暴露在URL中请求的URL一般会记录在服务器的访问日志中服务器的访问日志是黑客攻击的重点对象之一 ...

  4. android 检测网络是否连接,或者GPS是否可用

    很多android程序在打开时,检测网络是否连接,或者GPS是否可用: 1.网络是否连接(包括Wifi和移动网络) // 是否有可用网络 private boolean isNetworkConnec ...

  5. 教你用Ossim平台检测网络的Shellcode攻击

    教你用Ossim平台检测网络的Shellcode攻击行为 教程: http://www.tudou.com/programs/view/-hxTm0q1tDY/ 以下是视频截图: 更多视频内容: 本文 ...

  6. android 检测网络是否可用

    /**     * 检测网络是否可用     *      * @return     */    public boolean isNetworkConnected() {        Conne ...

  7. iOS开发网络篇—Reachability检测网络状态

    前言:当应用程序需要访问网络的时候,它首先应该检查设备的网络状态,确认设备的网络环境及连接情况,并针对这些情况提醒用户做出相应的处理.最好能监听设备的网络状态的改变,当设备网络状态连接.断开时,程序也 ...

  8. Android 检测网络连接状态

    Android连接网络的时候,并不是每次都能连接到网络,因此在程序启动中需要对网络的状态进行判断,如果没有网络则提醒用户进行设置. 首先,要判断网络状态,需要有相应的权限,下面为权限代码(Androi ...

  9. iOS检测网络连接状态

    官方Demo下载地址:https://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip 将Reachab ...

随机推荐

  1. aptana 插件离线下载方式

    aptana 插件离线下载方式 Aptana 网站改版后取消了eclipse 插件的zip直接下载地址,其实aptana 官网仍还提供aptana 插件的zip包下载不过比较隐蔽而已.很多人在线安装时 ...

  2. writev/readv

    ```cpp#include <sys/uio.h>ssize_t readv(int fd, const struct iovec *iov, int iovcnt);ssize_t w ...

  3. Jmeter压力测试环境准备

    Jmeter性能监控 配置好测试机器上的jmeter环境:http://jmeter-plugins.org/downloads/all/ 网站下载两个东西: JMeterPlugins-Standa ...

  4. TCP/IP具体解释--三次握手和四次握手 Dos攻击

    TCP连接的状态图 TCP建立连接的三次握手过程,以及关闭连接的四次握手过程 贴一个telnet建立连接,断开连接的使用wireshark捕获的packet截图. 1.建立连接协议(三次握手) (1) ...

  5. 手游2dx面试笔记一

    第一轮IQ测试:都来面试程序了,相信IQ再怎么也坑不到哪里去吧.要问什么样的题,几页纸呐, 如:1.找出不同类:羚羊.斑马.鲨鱼 2.在()里添一字使2边都能组词:木()料 3.中间值?:1,2,4, ...

  6. license文件生成原理

      byte解密weblogic加密oraclehex 现在很多J2EE应用都采用一个license文件来授权系统的使用,特别是在系统购买的早期,会提供有限制的license文件对系统进行限制,比如试 ...

  7. jquery之checkbox

    //checkbox 数据回显 var publishRange=rowData.publishRange.split(","); for(var i = 0;i < pub ...

  8. Drawable与Bitmap 自定义

    Drawable简介 Drawable是Android平下通用的图形对象,它可以装载常用格式的图像,比如GIF.PNG.JPG,当然也支持BMP.相比于View,我们并不需要去考虑如何measure. ...

  9. C#中通过类来继承两个接口,父类实例化接口中的方法,子类继承父类,调用方法

    实现了父类继承接口,父类实例化接口的方法,子类继承父类,子类调用父类的方法直接使用 代码如下: using System; using System.Collections.Generic; usin ...

  10. FreeMarker辅助

    /** * FreeMarker 辅助类 * @author Rubekid * */ public class FreeMarkerHelper { /** * 模板文件存放目录 */ privat ...