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. 记一次pending请求问题查找过程

    情景再现 近期发现网站访问变慢,经常会出现请求无法响应的问题,一个请求长时间没有返回,导致页面出现504(Gateway Timeout),我们使用的nodejs+ngnix(反向代理). 猜测原因 ...

  2. [置顶] 如何更改CSDN博客高亮代码皮肤的样式,使博客看起来更有范(推荐)

    由于本人写博客的时候,也没有配置博客的相关属性,因此贴出来的代码块都是CSDN默认的,因此代码背景色都是白色的,如下所示: 但是本人在浏览他人博客的时候,发现有些博客的代码块看起来比较有范,整个代码库 ...

  3. java 枚举类型

    原来枚举类型还可以这样玩... public enum Tenum { None(1),ByteArray(2),List(3),Map(4); private int id; private Ten ...

  4. DataTables 配置和使用

    WEB后台开发,如果用的是Bootstrap框架,那这个表格神器你一定不要错过. 官方地址:https://datatables.net/ What?英文不好,没关系咱有中文的 http://data ...

  5. OD: Universal Shellcode

    本节讲如果开发通用的 Shellcode. Shellcode 的组织 shellcode 的组织对成功地 exploit 很重要. 送入缓冲区的数据包括: . 填充物.一般用 0x90 (NOP) ...

  6. box-shadow全面解析

    一.box-shadow语法: box-shadow: none | inset(可选值,不设置,为外投影,设置,为内投影) x-offset(阴影水平偏移量,正方向为right) y-offset( ...

  7. 华为 oj 表示数字(代码有参考)理解算法设计

    虽然是初级题目,但是 也不是太容易就做出来的 还是用c++ 好些 因为c++ string 是可以存储到缓冲区的, 字符串长度可以变化 参考了某神的代码 和我的思路一样 ,就拿来主义了,挺经典的一道面 ...

  8. 22 java常用方法

    /** * 通过正则获取该目录下满足条件的所有目录 * @param luceneFilePathRegular 正则目录,如/user/solrindex/正则表达式 * @return 满足正则表 ...

  9. JavaScript高级程序设计第20章JSON 笔记 (学习笔记)

    第二十章 JSON 1.Json 可以表示三种类型的值: 1.简单值: 表示数值:5  表示字符串:“hello wrold”注表示字符串时必须使用双引号 2.对象: {“name”:“mi”,”ag ...

  10. mybatis常用语句

    <trim>标签中,prefix 前缀,suffix后缀, suffixOverrides语句最后如果有指定符号,则去除此符号, prefixOverrides语句最前面如果有指定符号,则 ...