/// <summary> /// 开始计数 /// </summary> public SpeedResult Begin() { var result = new SpeedResult { KeyName = null, Timer = new Stopwatch() }; result.Timer.Start(); ListResult = new List<SpeedResult> { result }; return result; }
/// <summary> /// 开始计数 /// </summary> public SpeedTest Begin() { var result = new SpeedResult { Timer = new Stopwatch() }; result.Timer.Start(); ListResult = new List<SpeedResult> { result }; return this; }
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); }
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")); }
/// <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; }
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); } }
/// <summary> /// 开始计数 /// </summary> public SpeedTest Begin() { var result = new SpeedResult { Timer = new Stopwatch() }; result.Timer.Start(); ListResult = new List <SpeedResult> { result }; return(this); }
/// <summary> /// 开始计数 /// </summary> public SpeedResult Begin() { var result = new SpeedResult { KeyName = null, Timer = new Stopwatch() }; result.Timer.Start(); ListResult = new List <SpeedResult> { result }; return(result); }
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; }
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); } }
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); } }
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)); }
/// <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); }
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); }