ajax测下载速度
前台
<%@ page contentType="text/html;charset=UTF-8" language="java"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>测试网速</title> </head> <script type="text/javascript" src="./js/jquery-1.9.1.js"></script> <script type="text/javascript"> function Network(){ checkSpeed(); } function checkSpeed(){ var a = window.setTimeout("ajaxLoad()",100); } function ajaxLoad( ){ var param = {}; var downPath = "<%=request.getContextPath()%>/TestSpeedServlet"; var sumDownLoad = 0.000; var download = 0.000; var flag = true; if(flag){ loop1:for(var i=0;i<10;i++){ //测试下载速度 var startDownLoadTime =new Date(); $.ajax({ type:"post", url :downPath, async:false, data: { "xmlDown": param},//1代表上传,2代表下载 success: function (data) { var endDownTime =new Date(); var a = data; if(a.localeCompare("error")==0){ alert("测试网速的人数过多!请您稍后再试"); flag = false; return loop1; }else{ var usedDownTime = (endDownTime-startDownLoadTime)/1000; //两个时间戳相差的毫秒数 var dowmSpeed = 1000/usedDownTime;//1000Kb sumDownLoad+=dowmSpeed; } }, error : function(data) { alert("测试网速的人数过多!请您稍后再试"); flag = false; return loop1; } }); } } download = sumDownLoad/10; document.getElementById("downloadSpeed").value=download; } //数据的转换 function transLoad(upload){ if(upload>=1024){ upload=upload/1024; upload = upload.toFixed(3); upload = upload+"MB/s" }else{ upload = upload.toFixed(3); upload = upload+"K/s" } return upload } </script> <body> <style> #title { font-size: 25px; font-weight:bold; font-family:"Microsoft Yahei"; } .option{ font-size:20px; font-family:"Microsoft Yahei"; } td{ border:1.5px solid gray; } #title{ background-color:#a7c9f1; } .loading{width: 100%;filter:alpha(opacity=80); height: 100%;background-color:gray;position: fixed;top:0;left:0;bottom:0;right:0;z-index: 99;display: none;} .loading img{display: block;width: 400px;height: 200px;position: fixed;top:40%;left: 40%;margin-left: -75px;margin-top: -75px;} </style> <table width="400" border="5" align="center" > <tr> <td colspan="2" align="center" id="title"><B>测试网速</B></td> </tr> <tr> <td class="option" id="upload" align="center">上传速度</td> <td><input type="text" name="uploadSpeed" id="uploadSpeed" size="25"/> </td> </tr> <tr> <td class="option" id="download" align="center">下载速度</td> <td><input type="text" name="downloadSpeed" id="downloadSpeed" size="25" /> </td> </tr> <tr> <td colspan="2" align="center" class="option"> <input type="button" name="testNetworkSpeed" value="测网速" onClick="Network()" /> </td> </tr> </table> <div class="loading" style="display: none;"> <img src="../../../../images/ee.gif"> </div> </body> </html>
后台
package test; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.io.FileUtils; import org.json.JSONObject; public class TestSpeedServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } static String testString = ""; static { try { long sizeOf = FileUtils.sizeOf(new File("d:/temp3/eee.xml"));//eee.xml中为1024个英文字符 testString = FileUtils.readFileToString(new File("d:/temp3/eee.xml"),"GBK");// windows // testString = FileUtils.readFileToString(new File("/tmp/bbb.txt"));//linux int fileSize = testString.length(); System.out.println(String.format("文件大小%dByte,%d/1024=%fKb",fileSize,fileSize,fileSize/1024.0)); } catch (IOException e) { e.printStackTrace(); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { JSONObject joStr = new JSONObject(); joStr.put("result", testString); PrintWriter out = response.getWriter(); out.print(joStr); out.close(); } catch (Exception e) { e.printStackTrace(); } return; } }