C#中判断Ip地址能否ping通

有的时候,哪怕ip地址的格式是正确的,但是也有可能是一个不可到达的ip地址或者不在同一个子网,这种时候 如果不做处理,很有可能会导致程序的连接出现问题从而崩溃。

请尝试下面的代码:

复制代码
 1 static bool PingIPAddress(string ipAddress, string targetIpAddress)
 2 {
 3     try
 4     {
 5         // 获取本机的所有网络接口
 6         NetworkInterface[] networkInterfaces = NetworkInterface.GetAllNetworkInterfaces();
 7 
 8         // 查找具有指定 IP 地址的网络接口
 9         NetworkInterface networkInterface = networkInterfaces.FirstOrDefault(
10             nic =>
11             {
12                 IPInterfaceProperties props = nic.GetIPProperties();
13                 return props.UnicastAddresses.Any(addr => addr.Address.ToString() == ipAddress);
14             });
15 
16         if (networkInterface == null)
17         {
18             Console.WriteLine("指定的本机IP地址未与任何网络接口关联。");
19             return false;
20         }
21 
22         // 创建 Ping 实例
23         using (Ping ping = new Ping())
24         {
25             PingReply reply = ping.Send(targetIpAddress, 1000); // 1000 毫秒超时时间
26 
27             if (reply.Status == IPStatus.Success)
28             {
29                 Console.WriteLine("Ping 成功。");
30                 return true;
31             }
32             else
33             {
34                 Console.WriteLine($"Ping 失败: {reply.Status.ToString()}");
35                 return false;
36             }
37         }
38     }
39     catch (Exception ex)
40     {
41         Console.WriteLine($"发生异常: {ex.Message}");
42         return false;
43     }
44 }
复制代码

调用方法:

1 static void Main(string[] args)
2     {
3         string localIPAddress = "本机IP地址";
4         string targetIPAddress = "目标IP地址";
5 
6         bool result = PingIPAddress(localIPAddress, targetIPAddress);
7         Console.WriteLine($"是否能 ping 通: {result}");
8     }

 

posted @   Yanaha  阅读(741)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示