c# 获取网关测试是否能ping通

我是一C#初学者,我想实现获取网关并ping这个网关地址,如果能ping通则执行下一步动作,如果ping20次之后还不通则提示用户检查网络连接,这段代码应该如何写呢?我写... 我是一C# 初学者,我想实现获取网关并ping这个网关地址,如果能ping通则执行下一步动作,如果ping 20次之后还不通则提示用户检查网络连接,这段代码应该如何写呢?我写了一段,但实现不了,麻烦帮忙看看应该如何修改?谢谢!
public void pinggateway()
{
//System.Net.NetworkInformation;
ManagementClass MC = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection NICS = MC.GetInstances();
foreach (ManagementObject NIC in NICS)
{
if (Convert.ToBoolean(NIC["ipEnabled"]) == true)
{
string ipgateway = (NIC["DefaultIPGateway"] as string[])[0];
if (ipgateway.ToString() != string.Empty)
{
for (int i = 1; i < 500; i++)
{
//bool online = false;
Ping ping = new Ping();
PingReply pingReply = ping.Send(ipgateway);
if (pingReply.Status == IPStatus.Success)
{
this.BtnJoin_Click();
this.Msg("The Ping times:" + i);
break;
}
else
{
i = i + 1;
}
}
}
}
}
}
展开
 我来答
shuibiyy
2016-05-23 · TA获得超过1724个赞
知道小有建树答主
回答量:446
采纳率:100%
帮助的人:144万
展开全部
static void Main(string[] args)
{
pinggateway();

}

public static void pinggateway()
{
//System.Net.NetworkInformation;
ManagementClass MC = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection NICS = MC.GetInstances();
foreach (ManagementObject NIC in NICS)
{
if (Convert.ToBoolean(NIC["ipEnabled"]) == true)
{
string ipgateway = (NIC["DefaultIPGateway"] as string[])[0];
if (ipgateway.ToString() != string.Empty)
{
int count = 0;
while (true)
{
if (Ping(ipgateway))
{
//如果ping通 做你要做的事
//在这里写你要做的事 或调用方法
Console.WriteLine("网络正常");
break;
}
if (count == 19)
{
Console.WriteLine("请检查网络连接");
break;
}
count++;
}
}
}
}
}

/// <summary>
/// 是否能 Ping 通指定的主机
/// </summary>
/// <param name="ip">ip 地址或主机名或域名</param>
/// <returns>true 通,false 不通</returns>
public static bool Ping(string ip)
{
System.Net.NetworkInformation.Ping p = new System.Net.NetworkInformation.Ping();
System.Net.NetworkInformation.PingOptions options = new System.Net.NetworkInformation.PingOptions();
options.DontFragment = true;
string data = "Test Data!";
byte[] buffer = Encoding.ASCII.GetBytes(data);
int timeout = 1000; // Timeout 时间,单位:毫秒
System.Net.NetworkInformation.PingReply reply = p.Send(ip, timeout, buffer, options);
if (reply.Status == System.Net.NetworkInformation.IPStatus.Success)
return true;
else
return false;
}
Storm代理
2023-07-25 广告
StormProxies是一家国内优质海外HTTP代理商,拥有一个庞大的IP资源池,覆盖200多个地区,IP数量大且匿名度高。其优点还包括超高并发、稳定高效、技术服务等特点,同时提供HTTP、HTTPS以及SOCKS5协议支持。此外,Sto... 点击进入详情页
本回答由Storm代理提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式