目标手机软件
流量多少 程序统计
模仿功能:流量统计
模仿对象:手机QQ 2008
模仿进度:第二期
开发平台:Java平台
3G来了,可移动、联通收费还是按流量计算,像手机QQ 2008这种需要网络通信的程序就有必要配备流量统计的功能,方便用户实时掌握了流量使用的状况。
流量统计功能设计思路
在手机网络软件使用中,需要产生一定的网络流量,该流量指手机网络软件的上传和下载流量之和。而现在移动运营商在手机上网过程中,都是按照流量计算上网费用的,例如中国移动的自由套餐计费标准是0.01元/KB。
由于使用手机网络软件将产生流量费用,所以手机网络软件产生的流量将是用户比较关心的一个问题,所以在手机网络软件中加入流量统计功能将是一个迫切的选择。
按照手机上网网络流量的定义,该流量包含上传流量和下载流量两部分,所以在软件中加入流量统计功能的思路就是获得手机软件发送给服务器程序的流量,以及服务器程序反馈给客户端的流量,然后将两个流量的数据求和即可。
在本文的设计流量统计功能(该功能模块下载地址:http://www.shudoo.com/bzsoft)中,首先设计了一个简单的界面,实现接收用户输入网址以及发送的内容,然后启动网络线程进行网络数据的发送,在数据发送完毕以后,统计发送产生的流量数据,然后接收服务器端的反馈数据,在服务器端反馈数据接收到以后,统计服务器反馈的数据流量,最后将本次网络通讯产生的流量显示到界面上,并显示累计的流量在界面类中(图1)。
通过HTTP统计流量
目前主流的手机联网的方式是HTTP,下面介绍如何统计使用HTTP协议进行网络编程时的流量统计。统计流量,就是统计每次完整的通信,即客户端发送的流量以及客户端获得的服务器端的反馈流量。
小知识:当前手机联网的方式主要有HTTP(超文本传输协议)方式和Socket(套接字)方式两种。HTTP方式即在手机中实现以HTTP协议的方式实现连接,在传输数据时使用HTTP协议,而Socket方式在传输时使用自定义的协议格式。虽然两者方式在上层的实现区别很大,但是底层都需要加入一些传输控制数据从而实现传输。
例如,访问数动连线(http://www.shudoo.com/bzsoft),会产生固定流量和动态流量,两者之和就是总的流量,也就是统计固定数据与动态数据之和。固定流量就是根据HTTP协议规定必然产生的数据,一般数据大小是固定的。动态流量是用户访问数动连线时实时产生的数据,数据不固定,是统计的核心。
要统计动态流量,就要用到“数组名.length”,利用它可以快速统计出数组的长度,这个长度也就是动态数据。把每次产生的动态数据相加就是总的动态流量。把总的动态流量和固定流量相加就是总的流量。
流量统计功能设计步骤
第一步:创建项目
启动Eclipse环境,选择“File→New→J2ME MIDlet Suit”,设置项目名称为“FlowCapacityCount”,并一路选择“Next”, 完成项目的建立。然后新建一个J2ME入口类,选择“File→New→J2ME MIDlet”,并设置名称为“FlowMIDlet”,点击“Finish”。创建项目的代码下载地址是http://www.shudoo.com/bzsoft。
第二步:设计界面
选择“File→New→Class”,并设置名称为“FlowForm”,点击“Finish”完成界面类的创建。然后在该界面中编写界面实现代码和启动网络通信线程代码。关键代码如下所示(完整代码下载地址:http://www.shudoo.com/bzsoft):
//初始化流量对象
siSendFlow = new StringItem("本次发送流量(字节):","0");
siReceiveFlow = new StringItem("本次接收流量(字节):","0");
siTotalSendFlow = new StringItem("总计发送流量(字节):","0");
siTotalReceiveFlow = new StringItem("总计接收流量(字节):","0");
append(siSendFlow);
append(siReceiveFlow);
append(siTotalSendFlow);
append(siTotalReceiveFlow);
第三步:设计网络通信类
选择“File→New→Class”,并设置名称为“HttpThread”,点击“Finish”完成该类的创建。然后在该类中实现网络通信代码的编写以及调用流量统计方法实现统计。关键代码如下所示(完整代码下载地址:http://www.shudoo.com/bzsoft):
其中网络连接部分的代码如下:
//设置头信息
hc.setRequestProperty("name", "value");
//发送数据
os = hc.openOutputStream();
os.write(sendData);
int systemDataLen = 3 + 1 + url.length() + 1 + 7 + 1;
//头信息内容为name:value,一个结束的换行符,总计11
systemDataLen += 11;
//统计总流量
int sendDataLen = FlowCount.countSendFlow(sendData, systemDataLen);
//显示到界面
flowForm.setSendFlow(sendDataLen);
//接收数据
is = hc.openInputStream();
//获得流数据
StringBuffer s = new StringBuffer();
//读取实体数据部分的第一个字节
int data = is.read();
//循环读取后续数据
while(data != -1){
//添加到s中
s.append((byte)data);
//继续读取下一个
data = is.read();
}
//统计接收流量
int receiveDataLen = FlowCount.countReceiveFlow(hc, s);
第四步:设计流量统计类
选择“File→New→Class”,并设置名称为“FlowCount”,点击“Finish”完成该类的创建。然后在该类中实现发送流量统计的方法和接收数据流量的统计方法。关键代码如下所示(完整代码下载地址:http://www.shudoo.com/bzsoft):
//预估响应行数据量为10字节
int responseLineLen = 0;
//统计头信息数量
int headLineLen = 0;
//遍历头信息
String headName = null;
String headValue = null;
try{
//获得响应信息
String responseStr = hc.getResponseMessage();
//统计响应行流量
responseLineLen = 7 + 1 + 3 + 1 + responseStr.length() + 1;
for(int i = 0; ;i++){
//依次获得头信息名称
headName = hc.getHeaderFieldKey(i);
//如果返回值为null,则代表结束
if(headName == null){
break;
}
//根据头信息名称获得头信息数值
headValue = hc.getHeaderField(headName);
//统计头信息流量,这里的2指每个头信息后换行
//字符1字节以及名称和值之间间隔冒号字符1字节的长度和
headLineLen += headName.length() + headValue.length() + 2;
第五步:运行程序
在Eclipse主界面左侧的“Package Explorer”中,选中项目源代码FlowMIDlet.java,单击鼠标右键,选择“Run As→Emulated J2ME Midlet”即可运行程序(图2)。
读者反馈
开发QQ群:想参照上期文章模仿设计,可我在Eclipse中怎么也没有找到J2ME项目,这是为什么?
小编:使用Eclipse开发J2ME程序,需要事先安装插件EclipseMe,该插件的下载地址是http://www.eclipseme.org,下载后点击“Help—Software updates”菜单进行安装。安装完成后就可以建立J2ME项目了。
开发QQ群:看了上期文章,想问问关闭振动具体应该怎么做?
小编:和控制背景灯一样,控制振动功能也只支持特定的手机,在标准的J2ME MIDP API中未实现关闭振动的功能。关闭振动功能手机API没有提供,需要在逻辑上实现。例如程序中加入一个控制振动的boolean变量,当变量不成立时,不执行手机振动的代码即可。
开发QQ群:我按照贵报讲解的原理,编写了实际的网络程序,在手机上每次进行网络通信都会弹出一个提示框,如何去掉网络的信息提示框呢?
小编:如果需要在手机上运行网络程序时,去掉该提示框,一般有两种方法。方法1:手机用户设置该程序。例如在Nokia手机中的操作是:选择该程序,然后选择“操作-应用软件接入-通讯-网络”,选中“仅第一次询问”,这样只在开始的第一次弹出提示框,以后就不在提示了。方法2:对该程序进行数字签名。一般公司才会购买数字证书,然后在程序发布以前对该程序进行数字签名。
开发QQ群:请问手机进入节能模式以后,如何编程实现恢复到正常模式呢?
小编:在上期文章中,文章只介绍了节能模式的实现,其实在源代码中包含了恢复到正常模式时的代码实现。恢复到正常模式时的原理实现为:将屏幕灯调整到正常亮度、开启振动等功能,并且将非核心的网络通信指令继续添加到网络线程中即可实现。
读者提问:我用J2ME调用函数发短信,每次都弹出确认提示,必须点了“确认”才能发送,这是为什么?我不想让用户知道我的程序在往外发短信,该怎么解决?
张凯:这是Java的安全机制,保证软件不做不该做的事情,比如在用户不知情的情况下恶意发送短信浪费用户话费,所以每次调用发送函数时都要求用户确认一下。如果你的发送请求是合理的,用户一般会同意,所以对程序不构成影响,不必过分在意此问题。
如果一定要绕过这种机制,就要去向官方申请认证,购买数字证书了,确认你的软件安全后才能给你饶过安全机制的权限。在这里提醒广大开发者,要时刻把用户利益摆在首位,编程技术是一把双刃剑,切勿用它来制造恶意软件、流氓软件甚至病毒,这种行为将会给用户带来许多麻烦,也会遭到大家的唾弃。
读者问题:我想用Socket方式穿越CMWAP网关,但是CMWAP只支持HTTP方式通信,请问如何实现呢?
你是手机编程的高手吗?你能解答上面这位读者的疑问吗?不要犹豫,来我们这里展示一下你的风采吧,来信请发到pcw-chendx@vip.sina.com(也可以给我们发送问题)。
分享到:
相关推荐
【标题】"E语言高仿360流量监控程序源码"揭示了这是一个使用E语言编写的源代码项目,其目标是实现一个类似360流量监控器的功能。E语言,可能是指 EasyLanguage,一种专为交易策略设计的编程语言,通常用于金融市场的...
基于Python的网络流量特征统计分析与可视化是一项利用Python编程语言的强大功能,对捕获的网络数据包进行处理和分析,以此来反映网络流量特征的先进技术。在当前信息和网络技术快速发展的背景下,网络应用日益增多,...
流量统计和控制软件是网络管理中的重要工具,主要用于监控和管理网络数据的使用情况。这样的软件可以帮助用户了解网络流量的动态,确保不会超出运营商设定的数据限制,从而避免额外的费用支出。下面将详细阐述流量...
3. **数据统计**:提供一段时间内的网络流量统计数据,比如日、周、月的总上传和下载量,帮助用户分析长期的网络使用模式。 4. **进程分析**:可以追踪到具体哪个进程在产生网络流量,这在排查问题或优化网络性能时...
5. 流量统计报告:提供详尽的流量统计报表,包括每日、每周和每月的流量使用情况,便于用户分析和规划。 二、360流量监控工作原理 360流量监控通过监测网络接口层的数据传输,分析各个进程的网络流量。它获取...
唯一一款内网外网流量分离的监控软件,程序设计轻巧,对网络负载小,基于网卡接口的监控保证了高精度流量数据统计汇总,实用稳定的功能,智能判断网络状态,设置部署简单可靠. 功能: 监控各计算机访问Internet网络的数据...
唯一一款内网外网流量分离的监控软件,程序设计轻巧,对网络负载小,基于网卡接口的监控保证了高精度流量数据统计汇总,实用稳定的功能,智能判断网络状态,设置部署简单可靠. 功能: 监控各计算机访问Internet网络的数据...
【流量显示器】是一种用于监测和管理计算机网络流量的工具,主要功能是实时显示电脑的上传和下载速度,以及累计的流量数据。这类软件通常为绿色软件,意味着它们无需安装即可运行,不写入系统注册表,方便用户随身...
2. **历史数据统计**:记录并展示过去一段时间内的网络使用情况,以便用户分析长期的流量模式。 3. **图表展示**:用图形化的方式呈现数据,如条形图或折线图,更直观地理解流量变化。 4. **内存管理**:显示系统...
流量监控是IT运维中至关重要的一个环节,它可以帮助我们实时了解服务器、网络设备以及应用程序的性能状况。在服务器上部署流量监控工具,可以有效管理网络带宽资源,防止因过度使用导致的服务中断或性能下降,同时也...
关于"WiFi伴侣刷歪点,随时随地省流量.exe",这可能是WiFi伴侣的安装程序文件,用户可以通过这个文件在电脑上安装WiFi伴侣应用。但是,需要注意的是,任何未知来源的.exe文件都有可能存在安全风险,因此在下载和运行...
- **累计流量统计**:记录自上次清零以来的总流量,对于过程控制和计量具有重要意义。 - **历史数据查询**:可能支持数据导出,便于进行长期的数据分析和趋势预测。 - **报警设置**:用户可以设定阈值,当流量超出...
《DU Meter:实时监控电脑网络流量的利器》 在信息化高度发达的今天,网络流量的监控对于个人用户和企业来说都至关重要。无论是保障网络安全、优化网络性能,还是控制带宽使用,都需要对网络流量进行实时监测。DU ...
该程序可能还包含了高级的流量分析功能,例如允许用户根据时间周期来统计流量数据,或设置自定义过滤条件来关注特定设备或应用的流量情况。 总而言之,【海王星主机和客户端流量检测】软件通过实时流量监控及分析,...
流量监控是其核心特性,通过实时监测网络中的数据传输,AWall能够提供详尽的流量统计报告,包括每台设备的上传、下载速度,以及总的流量消耗。这些信息对于识别网络中的异常行为,如P2P下载、大规模文件传输等,具有...
DU-meter是一款专业的网络流量监测工具,专为用户精确测量电脑的上传和下载流量而设计。它不仅操作简便,而且提供了实时、详细的网络使用情况,帮助用户更好地理解和管理自己的网络带宽资源。 一、功能特性 1. ...
1. **实时流量监测**:软件能够实时监控网络接口的流入和流出数据,提供每秒、每分钟或自定义时间周期内的流量统计,帮助用户时刻掌握网络活动的状态。 2. **带宽占用分析**:通过流量监控器,用户可以查看哪些应用...
CucusoftNet Guard网络流量统计条可实时统计自己电脑上网所耗费的流量数据大小多少,可以明明白白的看清楚每个程序耗费的流量有多少,有多少网络连接,还可以设定流量报警和流量限额。 特别提示:安装时会提示安装...
NetMeter是一款功能强大的网络流量监测工具,主要用于帮助用户实时监控电脑的网络使用情况。这款软件的版本为3.3,并且已经过汉化处理,适应中国用户的语言环境,同时它也被设计为绿色版,无需安装即可直接运行,...
cc 实例193 隐藏.c显示“我的电脑”.c“回收站”.c“网上邻居” cc实例194 隐藏.c显示驱动器 7.2 IE设置 cc实例195 修改IE标题栏内容 cc实例196 隐藏IE浏览器的右键关联菜单 cc实例197 ...