测网速-在线网速测试原理及代码

很多人想知道自己的网速怎么样,就会想办法测试,现在百度应用里就有很多这样的应用
简单介绍一种测网速的方法及代码,现在很多网站的测速方法都用这个,在线网速测试:http://tqybw.net/wangsuceshi/;
原理:首先确定图片的大小,然后计算从加载到加载完成需要的时间,这样大小除以时间就能知道每秒的下载速度;
举例:有一张图片放在厦门电信机房,用户访问放在这个机房服务器站点的其中一张100K的图片,加载完这张图片用了 1S,我就可以说这个用户对厦门电信的下载速度是100K/s
代码:<img src="http://tqybw.net/statics/images/map_15tianqi.jpg?=24253" alt="铁通宽带测速图片" width=400 height=300 onerror = "showerr()" οnlοad="showspeed();">
JS测束
function showspeed()


{


  var fs = 410.45;  //img.jpg文件大小(K)


  var l = 2 ;   //小数点的位数


  var et = new Date();


  alltime = fs*1000/(et - st);


  Lnum = Math.pow(10,l);


  calcspeed = Math.round(alltime*Lnum)/Lnum;


  showtxt.innerHTML = ("<strong>当前的网速为: <span class='red'>"+calcspeed*8+" Kbps</span><br/>您的下载速度为: <span class='red'>"+calcspeed+" (K/秒)</span></strong>");


  window.status = "您的下载速度为:"+calcspeed+" (K/秒)"


}
  如果你是安微电信,要对其测式,安徽电信测速,http://tqybw.net/wangsuceshi/anhuidianxin/
当然这样的测速方式是不怎么合理的,只能测出点点的相对速度,并不能代表直实数据,只能说要多测几次知道大概数据

可以使用 Android 自带的 NetworkStatsManager 类来获取网络使用情况和网速。以下是一个简单的代码示例: ```java private NetworkStatsManager networkStatsManager; private int uid; // 初始化 NetworkStatsManager 和 uid networkStatsManager = (NetworkStatsManager) getSystemService(Context.NETWORK_STATS_SERVICE); uid = getApplicationInfo().uid; // 获取当前应用的网速 long rxBytes = getRxBytesMobile() + getRxBytesWifi(); long txBytes = getTxBytesMobile() + getTxBytesWifi(); long totalBytes = rxBytes + txBytes; // 获取移动网络接收字节数 private long getRxBytesMobile() { NetworkStats.Bucket bucket = null; try { bucket = networkStatsManager.querySummaryForDevice(ConnectivityManager.TYPE_MOBILE, getSubscriberId(), 0, System.currentTimeMillis()); } catch (RemoteException e) { e.printStackTrace(); } return bucket == null ? 0 : bucket.getRxBytes(); } // 获取移动网络发送字节数 private long getTxBytesMobile() { NetworkStats.Bucket bucket = null; try { bucket = networkStatsManager.querySummaryForDevice(ConnectivityManager.TYPE_MOBILE, getSubscriberId(), 0, System.currentTimeMillis()); } catch (RemoteException e) { e.printStackTrace(); } return bucket == null ? 0 : bucket.getTxBytes(); } // 获取 WiFi 接收字节数 private long getRxBytesWifi() { NetworkStats.Bucket bucket = null; try { bucket = networkStatsManager.querySummaryForDevice(ConnectivityManager.TYPE_WIFI, "", 0, System.currentTimeMillis()); } catch (RemoteException e) { e.printStackTrace(); } return bucket == null ? 0 : bucket.getRxBytes(); } // 获取 WiFi 发送字节数 private long getTxBytesWifi() { NetworkStats.Bucket bucket = null; try { bucket = networkStatsManager.querySummaryForDevice(ConnectivityManager.TYPE_WIFI, "", 0, System.currentTimeMillis()); } catch (RemoteException e) { e.printStackTrace(); } return bucket == null ? 0 : bucket.getTxBytes(); } // 获取当前 SIM 卡的 IMSI 号 private String getSubscriberId() { TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); return tm.getSubscriberId(); } ``` 这个代码可以同时获取移动网络和 WiFi 网络的网速,单位是字节。你可以将获取的字节数转换为比特数或者千字节/秒。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值