コード例 #1
0
        /// <summary>
        ///     开始计数
        /// </summary>
        public SpeedResult Begin()
        {
            var result = new SpeedResult { KeyName = null, Timer = new Stopwatch() };
            result.Timer.Start();

            ListResult = new List<SpeedResult> { result };
            return result;
        }
コード例 #2
0
        /// <summary>
        ///     开始计数
        /// </summary>
        public SpeedTest Begin()
        {
            var result = new SpeedResult { Timer = new Stopwatch() };
            result.Timer.Start();

            ListResult = new List<SpeedResult> { result };
            return this;
        }
コード例 #3
0
ファイル: ConsolePrinter.cs プロジェクト: Ard1k/NetMonitor
 public static void PrintShortSpeedTestResult(SpeedResult result)
 {
     if (result.Error != null)
     {
         Console.WriteLine("[{0}]SpeedTest: Test failed! Reason: {1}", result.TimeStamp, result.Error);
         return;
     }
     Console.WriteLine("[{0}]SpeedTest: Speed - {1}Mbit/s Filesize - {2}MB Dwnload duration: {3}", result.TimeStamp, result.SpeedResultMbit.ToString("N5"), result.ResultFileSizeInMB.ToString("N2"), result.ElapsedTime);
 }
コード例 #4
0
ファイル: ConsolePrinter.cs プロジェクト: Ard1k/NetMonitor
 public static void PrintSpeedTestResult(SpeedResult result)
 {
     Console.WriteLine();
     Console.WriteLine("===== Speed Test Result: {0} ===== ", result.TimeStamp);
     Console.WriteLine("File URL: {0}", result.TestedFileURL);
     Console.WriteLine("Download duration: {0}", result.ElapsedTime);
     Console.WriteLine("File size: {0} MB", result.ResultFileSizeInMB.ToString("N2"));
     Console.WriteLine("Speed: {0} Mbit/s ", result.SpeedResultMbit.ToString("N5"));
 }
コード例 #5
0
 /// <summary>
 ///     判断键位是否存在(不存在,自动创建)
 /// </summary>
 private SpeedResult Create(string keyName)
 {
     var result = ListResult.Find(o => o.KeyName == keyName);
     if (result != null) return result;
     lock (_objLock)
     {
         if (ListResult.Count(o => o.KeyName == keyName) == 0) { ListResult.Add((result = new SpeedResult { KeyName = keyName, Timer = new Stopwatch() })); }
     }
     return result;
 }
コード例 #6
0
        private async Task <SpeedResult> TestDownloadSpeed(string url)
        {
            var sw = new Stopwatch();

            using (var response = _client.GetAsync(url, HttpCompletionOption.ResponseHeadersRead).Result)
            {
                response.EnsureSuccessStatusCode();
                var speedResult = new SpeedResult();

                using (var contentStream = await response.Content.ReadAsStreamAsync())
                {
                    sw.Start();

                    var buffer        = new byte[BufferSize];
                    var isMoreToRead  = true;
                    var tempBytesRead = 0L;
                    var tempWatch     = new Stopwatch();
                    tempWatch.Start();

                    do
                    {
                        var read = await contentStream.ReadAsync(buffer, 0, buffer.Length);

                        if (read == 0)
                        {
                            isMoreToRead = false;
                        }
                        else
                        {
                            tempBytesRead += read;

                            if (tempWatch.Elapsed.TotalSeconds >= 1)
                            {
                                var bps = (long)(tempBytesRead / tempWatch.Elapsed.TotalSeconds * 8);
                                speedResult.Samples.Add(bps);
                                tempWatch.Restart();
                                tempBytesRead = 0;

                                if (!_settings.IsOutputRedirected)
                                {
                                    Console.WriteLine($"{bps.ToMbps():F2} Mbps");
                                }
                            }
                        }
                    } while (isMoreToRead && sw.Elapsed <= TimeSpan.FromSeconds(15));
                }

                sw.Stop();

                return(speedResult);
            }
        }
コード例 #7
0
        /// <summary>
        ///     开始计数
        /// </summary>
        public SpeedTest Begin()
        {
            var result = new SpeedResult {
                Timer = new Stopwatch()
            };

            result.Timer.Start();

            ListResult = new List <SpeedResult> {
                result
            };
            return(this);
        }
コード例 #8
0
        /// <summary>
        ///     开始计数
        /// </summary>
        public SpeedResult Begin()
        {
            var result = new SpeedResult {
                KeyName = null, Timer = new Stopwatch()
            };

            result.Timer.Start();

            ListResult = new List <SpeedResult> {
                result
            };
            return(result);
        }
コード例 #9
0
        public static async Task SendSpeedResult(SpeedResult speedResults, string URL)
        {
            var json = JsonConvert.SerializeObject(speedResults);

            System.Console.WriteLine("Sending: " + json);
            var data = new StringContent(json, Encoding.UTF8, "application/json");
            var url  = URL;

            using var client = new HttpClient();
            var response = await client.PostAsync(url, data);

            //System.Console.WriteLine("ResultCode: " + response.StatusCode);
            string result = response.Content.ReadAsStringAsync().Result;
        }
コード例 #10
0
ファイル: Program.cs プロジェクト: alabrunda/SpeedTest
        static async Task Main()
        {
            string speedTestServerURL = Environment.GetEnvironmentVariable("SpeedTestServerURL") ?? "http://localhost:8080/api/speedtest";
            string clientName         = Environment.GetEnvironmentVariable("ClientName") ?? "Env:ClientName";

            System.Console.WriteLine("v0.02 Client: " + clientName + " Target: " + speedTestServerURL);

            string publicIPv4       = "NoIP";
            bool   serverAccessible = false;

            try
            {
                publicIPv4 = await SpeedTestClient.GetPublicIPv4AddressAsync();

                await SpeedTestClient.ValidateAPIAccess(speedTestServerURL);

                serverAccessible = true;
                System.Console.WriteLine("Success - PublicIP: " + publicIPv4 + " Accessible: " + speedTestServerURL);
            }
            catch (Exception)
            {
                System.Console.WriteLine("Exception - PublicIP: " + publicIPv4 + " Accessible: " + serverAccessible);
                Environment.Exit(0);
            }

            client   = new SpeedTestClient();
            settings = client.GetSettings();

            //var servers = SelectServers();
            var bestServer = SelectDesiredServer(settings.Servers);

            foreach (var server in bestServer)
            {
                SpeedResult speedResult = new SpeedResult();
                speedResult.ServerName   = server.Sponsor;
                speedResult.LatencyMS    = server.Latency;
                speedResult.ServerID     = server.Id;
                speedResult.IP           = publicIPv4;
                speedResult.ClientName   = clientName;
                speedResult.DistanceKM   = Math.Round(server.Distance);
                speedResult.DownloadMbps = Math.Round(client.TestDownloadSpeed(server, settings.Download.ThreadsPerUrl) / 1024, 2);
                speedResult.UploadMbps   = Math.Round(client.TestUploadSpeed(server, settings.Upload.ThreadsPerUrl) / 1024, 2);
                await SpeedTestClient.SendSpeedResult(speedResult, speedTestServerURL);
            }
        }
コード例 #11
0
        private async Task <SpeedResult> TestPing(string url)
        {
            var parsedUrl = new Uri(url);

            using (var ping = new Ping())
            {
                var speedResult = new SpeedResult();

                for (var i = 0; i < 4; i++)
                {
                    var result = await ping.SendPingAsync(parsedUrl.Host);

                    speedResult.Samples.Add(result.RoundtripTime);
                }

                return(speedResult);
            }
        }
コード例 #12
0
        public async Task <SpeedtestResult> Run(string source)
        {
            var runSettings = _settings.GetTestfileBySource(source);

            SpeedResult speedResult = null;
            SpeedResult pingResult  = null;

            try {
                speedResult = await TestDownloadSpeed(runSettings.Url);
            }
            catch (Exception) {}
            try {
                pingResult = await TestPing(runSettings.Url);
            }
            catch (Exception) {}

            return(new SpeedtestResult(speedResult, null, pingResult, source));
        }
コード例 #13
0
        /// <summary>
        ///     判断键位是否存在(不存在,自动创建)
        /// </summary>
        private SpeedResult Create(string keyName)
        {
            var result = ListResult.Find(o => o.KeyName == keyName);

            if (result != null)
            {
                return(result);
            }
            lock (_objLock)
            {
                if (ListResult.Count(o => o.KeyName == keyName) == 0)
                {
                    ListResult.Add((result = new SpeedResult {
                        KeyName = keyName, Timer = new Stopwatch()
                    }));
                }
            }
            return(result);
        }
コード例 #14
0
        public void LogSpeedTest(SpeedResult result)
        {
            var lines = new List <string>();

            var sb = new StringBuilder();

            sb.Append(result.TimeStamp.ToString("dd.MM.yyyy HH:mm:ss"));
            sb.Append("\t");
            sb.Append(result.TimeStamp.ToString("dd.MM.yyyy"));
            sb.Append("\t");
            sb.Append(result.TimeStamp.ToString("HH:mm:ss"));
            sb.Append("\t");
            sb.Append(result.TestedFileURL);
            sb.Append("\t");
            if (string.IsNullOrEmpty(result.Error))
            {
                sb.Append(result.ResultFileSizeInMB);
            }
            sb.Append("\t");
            if (string.IsNullOrEmpty(result.Error))
            {
                sb.Append(result.SpeedResultMbit);
            }
            sb.Append("\t");
            if (string.IsNullOrEmpty(result.Error))
            {
                sb.Append(result.ElapsedTime);
            }
            sb.Append("\t");
            if (result.Error != null)
            {
                sb.Append(result.Error);
            }
            sb.Append("\t");

            lines.Add(sb.ToString());

            File.AppendAllLines(Path + "/speedlog" + TimeStamp + ".txt", lines);
        }