在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
复制代码 代码如下: private void getSpeed() { //链接开始时间 DateTime stime = DateTime.Now; //文件 string url = "http://xxx.com/images/test.jpg "; WebRequest myRequest = WebRequest.Create(url); //链接成功 WebResponse myReponse = myRequest.GetResponse(); //取得文件的大小 字节单位 int ii = int.Parse(myReponse.ContentLength.ToString()); //取得流 Stream myStream = myReponse.GetResponseStream(); StreamReader sr = new StreamReader(myStream); byte[] mbyte=new byte[ii]; int allbyte=(int)mbyte.Length; int startbyte=0; string test = " "; while(ii> 0) //################ 循环读取文件,并显示进度..... { int m=myStream.Read(mbyte,startbyte,allbyte); if(m==0){break;} startbyte+=m; allbyte-=m; int a1=(int)startbyte/1024; int a2=(int)ii/1024; test+= "连接成功..开始下载..m= "+m+ "| " + a1.ToString() + "/ " + a2.ToString() + "KB ";//startbyte + "/ " + ii.ToString(); } //链接结束时间 DateTime etime=DateTime.Now; TimeSpan ts = etime - stime; //总共耗时 double SpeedTime = (double) ts.TotalSeconds; double Kbps = 0; double ShowPer = 0; if (SpeedTime> 0) { //网络速度 Kbps = Math.Round(Math.Round(ii*8/1024/SpeedTime*10.5)/10); //Kbps = Math.Round(ii/1024/ SpeedTime); } else { Kbps = 10000; } //用来显示当前流量所要显示的图片长度 ShowPer = Math.Round(Kbps/100); if (ShowPer <1) ShowPer = 1; else if(ShowPer> 82) ShowPer = 82; //网络速度 string sp = (Math.Round(Kbps/8*10)/10).ToString(); sr.Close(); myStream.Close(); myReponse.Close(); // Response.Write(test); Response.Write( "网络速度 "+sp+ "图片长度$ "+ShowPer+ "耗时$ "+SpeedTime+ "文件大小$ "+ii); Response.End(); } 最后有网友又给出了实现的另一思路: 用一个页面输出一个3M的网页(通过一个循环输出字节),然后异步去请求这个页面,计算开始时间与结束时间的差,然后再去计算。 思路还是老样,就是用webRequest去获取流文件就只是取得响应时间,但是得不得输出时间(自己的水平有限,不过我想肯定可以实现)。现在只是换了一个方法去获取输出时间。我在baidu与google也是只查到异步获取文字内容输出时间可以。但是有图片的就好像有点困难了。 不过最终的结果得到了,还是有点成绩感的。呵呵。。。 |
请发表评论