WinCE 测试网速
在进行企业级WinCE开发过程中,可能会遇到需要上传附件或者照片到某一指定服务器上的需求。这就需要在现场有有线网络或者无线网络覆盖,实际情况下企业多会选择无线网络。
现在作者遇到的情况是:在无线网络覆盖的情况下,在某一特定区域,由于某些设备的干扰(具体什么设备查不出来)导致上传速度变慢,可能只有几K每秒,如果需要上传什么几百K或者几M的东东,那用户岂不等死了!于是就想了一个折中办法,先把用户需要上传的附件保存在一个中转文件夹下,上传时需要先判断无线网速,如果此区域网速超过能正常上传的最低网速时,则后台上传附件。为此,需要测试无线上传下载网速。
测试上传下载网速其实就是上传下载一个文件,计算其用时,将文件大小除以用时就是上传或者下载的网速了。
代码如下:
//连接ftp FTPClient d = new FTPClient(FtpInfo.ip, FtpInfo.ml, FtpInfo.yhm, FtpInfo.mm, FtpInfo.dk); //默认情况下,Stopwatch 实例的运行时间值相当于所有测量的时间间隔的总和。 //每次调用 Start 时开始累计运行时间计数; //每次调用 Stop 时结束当前时间间隔测量,并冻结累计运行时间值。 //使用 Reset 方法可以清除现有 Stopwatch 实例中的累计运行时间。 System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch(); //测试上传 stopwatch.Start(); d.upload(Path.TestPath, ".txt"); stopwatch.Stop(); //获取文件大小,此处上传下载用的文件大小相同(测试文件208B) var filesize = d.GetFileSize("Test.txt"); this.labWAN.Text = "上传速度: " + (filesize * 1024 / stopwatch.ElapsedMilliseconds).ToString() + "K/S"; //若没有 Reset,则会把任务 1 的用时累计进入任务 2 stopwatch.Reset(); //测试下载 stopwatch.Start(); d.GetFile("Test1.txt", Path.TestPath, "Test1.txt"); stopwatch.Stop(); this.lblDown.Text = "下载速度: " + (filesize * 1024 / stopwatch.ElapsedMilliseconds).ToString() + "K/S";
效果图: