C#代码实现检测是否能ping通某台服务器

C#代码实现检测是否能ping通某台服务器

背景

在很多业务场景下都需要根据网络状态执行不同的操作,而最常用和效率比较高的办法就是使用ping,那么在C#代码中如何实现这块逻辑呢?

代码实现

编写一个工具类TPTools.cs,如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.NetworkInformation;
using System.Text;

namespace WindowsFormsApplication1
{
    public class IPTools
    {
        #region 检测某个IP或域名是否可以Ping通

        /// <summary>
        /// 检测某个IP或域名是否可以Ping通
        /// </summary>
        /// <param name="strIpOrDName">IP或域名</param>
        /// <returns>true为通,false为不通</returns>
        public static bool PingIpOrDomainName(string strIpOrDName)
        {
            try
            {
                Ping objPingSender = new Ping();
                PingOptions objPinOptions = new PingOptions();
                objPinOptions.DontFragment = true;
                string data = "";
                byte[] buffer = Encoding.UTF8.GetBytes(data);
                int intTimeout = 120;
                PingReply objPinReply = objPingSender.Send(strIpOrDName, intTimeout, buffer, objPinOptions);
                string strInfo = objPinReply.Status.ToString();
                if (strInfo == "Success")
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            catch (Exception)
            {
                return false;
            }
        }

        #endregion
    }
}

测试代码

private void button1_Click(object sender, EventArgs e)
{
    string ip1 = "127.0.0.1";
    bool result = IPTools.PingIpOrDomainName(ip1);
    Console.WriteLine("ping {0} result is {1}!", ip1, result);

    string ip2 = "www.baidu.com";
    result = IPTools.PingIpOrDomainName(ip2);
    Console.WriteLine("ping {0} result is {1}!", ip2, result);

    string ip3 = "192.168.5.123";
    result = IPTools.PingIpOrDomainName(ip3);
    Console.WriteLine("ping {0} result is {1}!", ip3, result);
}

运行结果

运行结果如下图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值