public PingSettings GetCurrentPingSettings() { var result = new PingSettings { CanPingUntilStopped = this.CanPingUntilStopped, CanPingIpV4 = this.CanPingIpV4, CanPingIpV6 = this.CanPingIpV6, CanPingHyperV = this.CanPingHyperV, RequestNumber = this.RequestNumber, BufferLength = this.BufferLength, Ttl = this.Ttl, TimeOut = this.TimeOut }; return(result); }
private async Task UntilStoppedPingAsync(PingModel pingModel, PingSettings setting, CancellationToken token) { while (pingModel.IsWorking) { try { var newPing = await this.EchoRequestAsync(setting.Host, setting.BufferLength, setting.Ttl, setting.TimeOut, token); pingModel.Add(newPing); await Task.Delay(500); } catch (OperationCanceledException) { break; } } }
private async Task CountPingAsync(PingModel ping, PingSettings setting, CancellationToken token) { for (int i = 0; i < setting.RequestNumber && ping.IsWorking; i++) { try { var newPing = await this.EchoRequestAsync(setting.Host, setting.BufferLength, setting.Ttl, setting.TimeOut, token); ping.Add(newPing); await Task.Delay(500); } catch (OperationCanceledException) { break; } } }
public async Task PingAsync(PingModel ping, PingSettings setting, CancellationToken token) { ping.Start(); var workTimer = Stopwatch.StartNew(); if (setting.CanPingUntilStopped) { await this.UntilStoppedPingAsync(ping, setting, token); } else { await this.CountPingAsync(ping, setting, token); } workTimer.Stop(); ping.TimeStamp = workTimer.ElapsedMilliseconds; ping.Finish(); }
private void pingBtn_Click(object sender, RoutedEventArgs e) { echoReplies.Items.Clear(); byte ttl = 0; if (!byte.TryParse(pingTtlTxt.Text, out ttl)) { MessageBox.Show("\"" + pingTtlTxt.Text + "\" is not a valid Ttl (Time-to-Live)."); return; } ushort bytes = 0; if (!ushort.TryParse(pingBytesTxt.Text, out bytes)) { MessageBox.Show("\"" + pingBytesTxt.Text + "\" is not a valid Bytes value."); return; } int repeat = 0; if (!int.TryParse(pingRepeatTxt.Text, out repeat)) { MessageBox.Show("\"" + pingRepeatTxt.Text + "\" is not a valid repeat value."); return; } int timeout = 0; if (!int.TryParse(pingTimeoutTxt.Text, out timeout)) { MessageBox.Show("\"" + pingTimeoutTxt.Text + "\" is not a valid timeout value."); return; } int delay = 0; if (!int.TryParse(pingDelayTxt.Text, out delay)) { MessageBox.Show("\"" + pingDelayTxt.Text + "\" is not a valid delay value."); return; } Client.Icmp.CurrentPings.Clear(); echoReplies.Items.Clear(); string val = pingDestinationTxt.Text; try { IPv4Address ip = new IPv4Address(val); Task.Run(() => { Client.Icmp.Ping(ip, PingSettings.FromConfig(ttl, bytes, timeout, repeat, delay), (result) => { AddPingResult(result); }); }); } catch { Task.Run(() => { Client.Icmp.Ping(val, PingSettings.FromConfig(ttl, bytes, timeout, repeat, delay), (result) => { AddPingResult(result); }); }); } }