欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

asp.net实现的计算网页下载速度的代码

程序员文章站 2024-03-04 11:04:11
复制代码 代码如下:private   void   getspeed()     &nbs...

复制代码 代码如下:

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也是只查到异步获取文字内容输出时间可以。但是有图片的就好像有点困难了。

      不过最终的结果得到了,还是有点成绩感的。呵呵。。。