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";


效果图:







posted @ 2013-01-18 14:44  风一样的大叔  阅读(398)  评论(0编辑  收藏  举报