Merge pull request #2 from swagfin/feature/target-ping-checker
Feature/target ping checker
This commit is contained in:
commit
49c90c81b1
|
@ -13,6 +13,7 @@ namespace PortProxyGUI.Data
|
||||||
public int ConnectPort { get; set; }
|
public int ConnectPort { get; set; }
|
||||||
public string Comment { get; set; }
|
public string Comment { get; set; }
|
||||||
public string Group { get; set; }
|
public string Group { get; set; }
|
||||||
|
public string PingStatus { get; set; } = "Not checked";
|
||||||
|
|
||||||
public bool Valid => ListenPort > 0 && ConnectPort > 0;
|
public bool Valid => ListenPort > 0 && ConnectPort > 0;
|
||||||
|
|
||||||
|
|
|
@ -37,12 +37,14 @@
|
||||||
this.columnHeader4 = new System.Windows.Forms.ColumnHeader();
|
this.columnHeader4 = new System.Windows.Forms.ColumnHeader();
|
||||||
this.columnHeader5 = new System.Windows.Forms.ColumnHeader();
|
this.columnHeader5 = new System.Windows.Forms.ColumnHeader();
|
||||||
this.columnHeader6 = new System.Windows.Forms.ColumnHeader();
|
this.columnHeader6 = new System.Windows.Forms.ColumnHeader();
|
||||||
|
this.columnPingStatus = new System.Windows.Forms.ColumnHeader();
|
||||||
this.columnHeader7 = new System.Windows.Forms.ColumnHeader();
|
this.columnHeader7 = new System.Windows.Forms.ColumnHeader();
|
||||||
this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
|
this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||||
this.toolStripMenuItem_Enable = new System.Windows.Forms.ToolStripMenuItem();
|
this.toolStripMenuItem_Enable = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.toolStripMenuItem_Disable = new System.Windows.Forms.ToolStripMenuItem();
|
this.toolStripMenuItem_Disable = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
|
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
this.toolStripMenuItem_Refresh = new System.Windows.Forms.ToolStripMenuItem();
|
this.toolStripMenuItem_Refresh = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.toolStripMenuItem_RefreshPingStatus = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.toolStripMenuItem_FlushDnsCache = new System.Windows.Forms.ToolStripMenuItem();
|
this.toolStripMenuItem_FlushDnsCache = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
|
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
this.toolStripMenuItem_New = new System.Windows.Forms.ToolStripMenuItem();
|
this.toolStripMenuItem_New = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
@ -64,6 +66,7 @@
|
||||||
this.columnHeader4,
|
this.columnHeader4,
|
||||||
this.columnHeader5,
|
this.columnHeader5,
|
||||||
this.columnHeader6,
|
this.columnHeader6,
|
||||||
|
this.columnPingStatus,
|
||||||
this.columnHeader7});
|
this.columnHeader7});
|
||||||
this.listViewProxies.ContextMenuStrip = this.contextMenuStrip1;
|
this.listViewProxies.ContextMenuStrip = this.contextMenuStrip1;
|
||||||
resources.ApplyResources(this.listViewProxies, "listViewProxies");
|
resources.ApplyResources(this.listViewProxies, "listViewProxies");
|
||||||
|
@ -104,6 +107,10 @@
|
||||||
this.columnHeader6.Tag = "";
|
this.columnHeader6.Tag = "";
|
||||||
resources.ApplyResources(this.columnHeader6, "columnHeader6");
|
resources.ApplyResources(this.columnHeader6, "columnHeader6");
|
||||||
//
|
//
|
||||||
|
// columnPingStatus
|
||||||
|
//
|
||||||
|
resources.ApplyResources(this.columnPingStatus, "columnPingStatus");
|
||||||
|
//
|
||||||
// columnHeader7
|
// columnHeader7
|
||||||
//
|
//
|
||||||
resources.ApplyResources(this.columnHeader7, "columnHeader7");
|
resources.ApplyResources(this.columnHeader7, "columnHeader7");
|
||||||
|
@ -115,6 +122,7 @@
|
||||||
this.toolStripMenuItem_Disable,
|
this.toolStripMenuItem_Disable,
|
||||||
this.toolStripSeparator3,
|
this.toolStripSeparator3,
|
||||||
this.toolStripMenuItem_Refresh,
|
this.toolStripMenuItem_Refresh,
|
||||||
|
this.toolStripMenuItem_RefreshPingStatus,
|
||||||
this.toolStripMenuItem_FlushDnsCache,
|
this.toolStripMenuItem_FlushDnsCache,
|
||||||
this.toolStripSeparator2,
|
this.toolStripSeparator2,
|
||||||
this.toolStripMenuItem_New,
|
this.toolStripMenuItem_New,
|
||||||
|
@ -146,6 +154,11 @@
|
||||||
this.toolStripMenuItem_Refresh.Name = "toolStripMenuItem_Refresh";
|
this.toolStripMenuItem_Refresh.Name = "toolStripMenuItem_Refresh";
|
||||||
resources.ApplyResources(this.toolStripMenuItem_Refresh, "toolStripMenuItem_Refresh");
|
resources.ApplyResources(this.toolStripMenuItem_Refresh, "toolStripMenuItem_Refresh");
|
||||||
//
|
//
|
||||||
|
// toolStripMenuItem_RefreshPingStatus
|
||||||
|
//
|
||||||
|
this.toolStripMenuItem_RefreshPingStatus.Name = "toolStripMenuItem_RefreshPingStatus";
|
||||||
|
resources.ApplyResources(this.toolStripMenuItem_RefreshPingStatus, "toolStripMenuItem_RefreshPingStatus");
|
||||||
|
//
|
||||||
// toolStripMenuItem_FlushDnsCache
|
// toolStripMenuItem_FlushDnsCache
|
||||||
//
|
//
|
||||||
this.toolStripMenuItem_FlushDnsCache.Name = "toolStripMenuItem_FlushDnsCache";
|
this.toolStripMenuItem_FlushDnsCache.Name = "toolStripMenuItem_FlushDnsCache";
|
||||||
|
@ -224,6 +237,8 @@
|
||||||
private System.Windows.Forms.ColumnHeader columnHeader7;
|
private System.Windows.Forms.ColumnHeader columnHeader7;
|
||||||
internal System.Windows.Forms.ListView listViewProxies;
|
internal System.Windows.Forms.ListView listViewProxies;
|
||||||
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem_FlushDnsCache;
|
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem_FlushDnsCache;
|
||||||
|
private System.Windows.Forms.ColumnHeader columnPingStatus;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem_RefreshPingStatus;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
using NStandard;
|
using NStandard;
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
|
using System.Drawing;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Net.NetworkInformation;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using static System.Windows.Forms.ListViewItem;
|
using static System.Windows.Forms.ListViewItem;
|
||||||
|
|
||||||
|
@ -12,7 +15,7 @@ namespace PortProxyGUI
|
||||||
public SetProxy SetProxyForm;
|
public SetProxy SetProxyForm;
|
||||||
public About AboutForm;
|
public About AboutForm;
|
||||||
private ListViewColumnSorter lvwColumnSorter;
|
private ListViewColumnSorter lvwColumnSorter;
|
||||||
|
private List<KeyValuePair<string, IPStatus>> hostStatus { get; set; } = new List<KeyValuePair<string, IPStatus>>();
|
||||||
public PortProxyGUI()
|
public PortProxyGUI()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
@ -46,7 +49,8 @@ namespace PortProxyGUI
|
||||||
ListenPort = listenPort,
|
ListenPort = listenPort,
|
||||||
ConnectTo = subItems[4].Text.Trim(),
|
ConnectTo = subItems[4].Text.Trim(),
|
||||||
ConnectPort = connectPort,
|
ConnectPort = connectPort,
|
||||||
Comment = subItems[6].Text.Trim(),
|
PingStatus = subItems[6].Text.Trim(),
|
||||||
|
Comment = subItems[7].Text.Trim(),
|
||||||
Group = item.Group?.Header.Trim(),
|
Group = item.Group?.Header.Trim(),
|
||||||
};
|
};
|
||||||
return rule;
|
return rule;
|
||||||
|
@ -154,7 +158,14 @@ namespace PortProxyGUI
|
||||||
new ListViewSubItem(item, rule.ListenPort.ToString()) { Tag = "Number" },
|
new ListViewSubItem(item, rule.ListenPort.ToString()) { Tag = "Number" },
|
||||||
new ListViewSubItem(item, rule.ConnectTo),
|
new ListViewSubItem(item, rule.ConnectTo),
|
||||||
new ListViewSubItem(item, rule.ConnectPort.ToString ()) { Tag = "Number" },
|
new ListViewSubItem(item, rule.ConnectPort.ToString ()) { Tag = "Number" },
|
||||||
new ListViewSubItem(item, rule.Comment ?? ""),
|
new ListViewSubItem(item, rule.PingStatus ?? string.Empty)
|
||||||
|
{
|
||||||
|
Tag ="Connect To Ping Status",
|
||||||
|
ForeColor = rule.PingStatus.Equals("Success") ? Color.Green
|
||||||
|
: rule.PingStatus.Equals("Pending") ? Color.DarkGray
|
||||||
|
: Color.MediumVioletRed
|
||||||
|
},
|
||||||
|
new ListViewSubItem(item, rule.Comment ?? string.Empty)
|
||||||
});
|
});
|
||||||
|
|
||||||
if (rule.Group.IsNullOrWhiteSpace()) item.Group = null;
|
if (rule.Group.IsNullOrWhiteSpace()) item.Group = null;
|
||||||
|
@ -172,6 +183,9 @@ namespace PortProxyGUI
|
||||||
|
|
||||||
public void RefreshProxyList()
|
public void RefreshProxyList()
|
||||||
{
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
|
||||||
var proxies = CmdUtil.GetProxies();
|
var proxies = CmdUtil.GetProxies();
|
||||||
var rules = Program.SqliteDbScope.Rules.ToArray();
|
var rules = Program.SqliteDbScope.Rules.ToArray();
|
||||||
foreach (var proxy in proxies)
|
foreach (var proxy in proxies)
|
||||||
|
@ -195,6 +209,11 @@ namespace PortProxyGUI
|
||||||
InitProxyGroups(rules);
|
InitProxyGroups(rules);
|
||||||
InitProxyItems(rules, proxies);
|
InitProxyItems(rules, proxies);
|
||||||
}
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show(ex.Message, "Error Refreshing");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void FlushDnsCache()
|
public void FlushDnsCache()
|
||||||
{
|
{
|
||||||
|
@ -237,6 +256,9 @@ namespace PortProxyGUI
|
||||||
case ToolStripMenuItem item when item == toolStripMenuItem_Refresh:
|
case ToolStripMenuItem item when item == toolStripMenuItem_Refresh:
|
||||||
RefreshProxyList();
|
RefreshProxyList();
|
||||||
break;
|
break;
|
||||||
|
case ToolStripMenuItem item when item == toolStripMenuItem_RefreshPingStatus:
|
||||||
|
RefreshConnectHostPingStatus();
|
||||||
|
break;
|
||||||
case ToolStripMenuItem item when item == toolStripMenuItem_FlushDnsCache:
|
case ToolStripMenuItem item when item == toolStripMenuItem_FlushDnsCache:
|
||||||
FlushDnsCache();
|
FlushDnsCache();
|
||||||
break;
|
break;
|
||||||
|
@ -314,5 +336,42 @@ namespace PortProxyGUI
|
||||||
if (e.KeyCode == Keys.Delete) DeleteSelectedProxies();
|
if (e.KeyCode == Keys.Delete) DeleteSelectedProxies();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void RefreshConnectHostPingStatus()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var items = listViewProxies.Items.OfType<ListViewItem>();
|
||||||
|
hostStatus = new List<KeyValuePair<string, IPStatus>>();
|
||||||
|
foreach (var item in items)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//Custom Color for cells
|
||||||
|
item.UseItemStyleForSubItems = false;
|
||||||
|
//Proceed
|
||||||
|
Data.Rule rule = ParseRule(item);
|
||||||
|
//Check if host already pinged host
|
||||||
|
var alreadyChkdHost = hostStatus.FirstOrDefault(x => x.Key.Equals(rule.ConnectTo, StringComparison.OrdinalIgnoreCase));
|
||||||
|
if (!string.IsNullOrEmpty(alreadyChkdHost.Key))
|
||||||
|
{
|
||||||
|
//Skip Checking Status since already checked
|
||||||
|
rule.PingStatus = alreadyChkdHost.Value.ToString();
|
||||||
|
UpdateListViewItem(item, rule, item.ImageIndex);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//If not yet checked
|
||||||
|
PingCheckerUtil.GetPingResult(rule.ConnectTo, 2, out IPStatus ipStatus, out _, out _);
|
||||||
|
hostStatus.Add(new KeyValuePair<string, IPStatus>(rule.ConnectTo, ipStatus));
|
||||||
|
rule.PingStatus = ipStatus.ToString();
|
||||||
|
UpdateListViewItem(item, rule, item.ImageIndex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -94,6 +94,12 @@
|
||||||
<data name="columnHeader6.Width" type="System.Int32, mscorlib">
|
<data name="columnHeader6.Width" type="System.Int32, mscorlib">
|
||||||
<value>100</value>
|
<value>100</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="columnPingStatus.Text" xml:space="preserve">
|
||||||
|
<value>Ping Status</value>
|
||||||
|
</data>
|
||||||
|
<data name="columnPingStatus.Width" type="System.Int32, mscorlib">
|
||||||
|
<value>104</value>
|
||||||
|
</data>
|
||||||
<data name="columnHeader7.Text" xml:space="preserve">
|
<data name="columnHeader7.Text" xml:space="preserve">
|
||||||
<value>Comment</value>
|
<value>Comment</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -125,6 +131,18 @@
|
||||||
<data name="toolStripMenuItem_Refresh.Text" xml:space="preserve">
|
<data name="toolStripMenuItem_Refresh.Text" xml:space="preserve">
|
||||||
<value>Refresh (&F)</value>
|
<value>Refresh (&F)</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="toolStripMenuItem_Refresh.ToolTipText" xml:space="preserve">
|
||||||
|
<value>Refresh Port Proxies</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolStripMenuItem_RefreshPingStatus.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
|
<value>180, 22</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolStripMenuItem_RefreshPingStatus.Text" xml:space="preserve">
|
||||||
|
<value>Refresh Ping Status</value>
|
||||||
|
</data>
|
||||||
|
<data name="toolStripMenuItem_RefreshPingStatus.ToolTipText" xml:space="preserve">
|
||||||
|
<value>Refresh Host Ping Statuses</value>
|
||||||
|
</data>
|
||||||
<data name="toolStripMenuItem_FlushDnsCache.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="toolStripMenuItem_FlushDnsCache.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>180, 22</value>
|
<value>180, 22</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -132,7 +150,7 @@
|
||||||
<value>Flush DNS Cache</value>
|
<value>Flush DNS Cache</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="toolStripMenuItem_FlushDnsCache.ToolTipText" xml:space="preserve">
|
<data name="toolStripMenuItem_FlushDnsCache.ToolTipText" xml:space="preserve">
|
||||||
<value>Will perform ipconfig/flushDNS</value>
|
<value>Perform ipconfig/flushDNS</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="toolStripSeparator2.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="toolStripSeparator2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>177, 6</value>
|
<value>177, 6</value>
|
||||||
|
@ -165,7 +183,7 @@
|
||||||
<value>About</value>
|
<value>About</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="contextMenuStrip1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="contextMenuStrip1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>181, 220</value>
|
<value>181, 242</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>contextMenuStrip1.Name" xml:space="preserve">
|
<data name=">>contextMenuStrip1.Name" xml:space="preserve">
|
||||||
<value>contextMenuStrip1</value>
|
<value>contextMenuStrip1</value>
|
||||||
|
@ -184,10 +202,10 @@
|
||||||
<value>0, 0</value>
|
<value>0, 0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="listViewProxies.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
<data name="listViewProxies.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
|
||||||
<value>4, 3, 4, 3</value>
|
<value>5, 3, 5, 3</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="listViewProxies.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="listViewProxies.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>704, 456</value>
|
<value>797, 456</value>
|
||||||
</data>
|
</data>
|
||||||
<metadata name="imageListProxies.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
<metadata name="imageListProxies.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
<value>182, 17</value>
|
<value>182, 17</value>
|
||||||
|
@ -197,7 +215,7 @@
|
||||||
AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs
|
AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs
|
||||||
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu
|
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu
|
||||||
SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA3AgAAAJNU0Z0AUkBTAIBAQIB
|
SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAA3AgAAAJNU0Z0AUkBTAIBAQIB
|
||||||
AAEwAQEBMAEBARABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMAAUADAAEQAwABAQEAAQgG
|
AAF4AQEBeAEBARABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMAAUADAAEQAwABAQEAAQgG
|
||||||
AAEEGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEAAfABygGmAQABMwUAATMB
|
AAEEGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEAAfABygGmAQABMwUAATMB
|
||||||
AAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEAAYABfAH/AQACUAH/AQAB
|
AAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEAAYABfAH/AQACUAH/AQAB
|
||||||
kwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFmAwABmQMAAcwCAAEzAwAC
|
kwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFmAwABmQMAAcwCAAEzAwAC
|
||||||
|
@ -256,10 +274,13 @@
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||||
<value>6, 13</value>
|
<value>7, 15</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>704, 456</value>
|
<value>797, 456</value>
|
||||||
|
</data>
|
||||||
|
<data name="$this.Font" type="System.Drawing.Font, System.Drawing">
|
||||||
|
<value>Segoe UI, 9pt</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
<value>
|
<value>
|
||||||
|
@ -2464,6 +2485,12 @@
|
||||||
<data name=">>columnHeader6.Type" xml:space="preserve">
|
<data name=">>columnHeader6.Type" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name=">>columnPingStatus.Name" xml:space="preserve">
|
||||||
|
<value>columnPingStatus</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>columnPingStatus.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ColumnHeader, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
<data name=">>columnHeader7.Name" xml:space="preserve">
|
<data name=">>columnHeader7.Name" xml:space="preserve">
|
||||||
<value>columnHeader7</value>
|
<value>columnHeader7</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -2494,6 +2521,12 @@
|
||||||
<data name=">>toolStripMenuItem_Refresh.Type" xml:space="preserve">
|
<data name=">>toolStripMenuItem_Refresh.Type" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name=">>toolStripMenuItem_RefreshPingStatus.Name" xml:space="preserve">
|
||||||
|
<value>toolStripMenuItem_RefreshPingStatus</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>toolStripMenuItem_RefreshPingStatus.Type" xml:space="preserve">
|
||||||
|
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</data>
|
||||||
<data name=">>toolStripMenuItem_FlushDnsCache.Name" xml:space="preserve">
|
<data name=">>toolStripMenuItem_FlushDnsCache.Name" xml:space="preserve">
|
||||||
<value>toolStripMenuItem_FlushDnsCache</value>
|
<value>toolStripMenuItem_FlushDnsCache</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
using System.Net;
|
||||||
|
using System.Net.NetworkInformation;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace PortProxyGUI
|
||||||
|
{
|
||||||
|
public static class PingCheckerUtil
|
||||||
|
{
|
||||||
|
// Adapted from https://docs.microsoft.com/en-us/dotnet/api/system.net.networkinformation.ping.send
|
||||||
|
public static bool GetPingResult(string ipAddress, int timeout, out IPStatus responseStatus, out IPAddress responseIpAddress, out long responseTime)
|
||||||
|
{
|
||||||
|
//Defaults
|
||||||
|
responseIpAddress = null;
|
||||||
|
responseTime = 0;
|
||||||
|
responseStatus = IPStatus.Unknown;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//Sending 32bytes
|
||||||
|
byte[] buffer = Encoding.ASCII.GetBytes("12345678901234567890123456789012");
|
||||||
|
Ping pingSender = new Ping();
|
||||||
|
PingOptions options = new PingOptions(64, true);
|
||||||
|
PingReply reply = pingSender.Send(ipAddress, timeout, buffer, options);
|
||||||
|
responseIpAddress = reply.Address;
|
||||||
|
responseTime = reply.RoundtripTime;
|
||||||
|
responseStatus = reply.Status;
|
||||||
|
return (reply.Status == IPStatus.Success) ? true : false;
|
||||||
|
}
|
||||||
|
catch { return false; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue