iT邦幫忙

2021 iThome 鐵人賽

DAY 18
0
Software Development

C# 入门系列 第 18

C#入门之ping

前面我们有说过了 ssh 链接,今天我们来看看,怎么通过 C# ping 一个主机,以判断主机是否可达。

C# 中,ping 位于 System.Net.NetworkInformation 名称空间,你需要在程序的开始通过 using 引用该名称空间,才可以使用 ping。

下面我们来一起看看具体的实现代码:

using System;
using System.Net.NetworkInformation;
using System.Text;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            Ping pingSender = new Ping();     // 新建一个 ping 类
            PingOptions pingOptions = new PingOptions();
            pingOptions.DontFragment = true;
            string data = "ping test data";  // 定义 ping 发送的数据包
            byte[] buffer = Encoding.ASCII.GetBytes(data);  
            int timeout = 120;
            Console.WriteLine("Please enter a IP address:");
            string ip = Console.ReadLine();
            PingReply reply = pingSender.Send(ip, timeout, buffer, pingOptions);
            if (reply.Status == IPStatus.Success)
            {
                Console.WriteLine("Address: " + reply.Address.ToString());
                Console.WriteLine("RoundTrip time: " + reply.RoundtripTime);
                Console.WriteLine("Time to live: " + reply.Options.Ttl);
                Console.WriteLine("Don't fragment: " + reply.Options.DontFragment);
                Console.WriteLine("Buffer size: " + reply.Buffer.Length);
            }
        }
    }
}

代码说明:

  • 要使用 ping,创建一个 ping 类,使应用程序使用 Ping 来检测远程计算机是否可访问。
  • 还需要使用 PingOptions 类来控制如何传输 Ping 数据包。
  • DontFragment 属性用于控制,是否可以将数据拆成多个包,默认为 false。这个属性对于要测试路由器或交换机的最大传输单元 (MTU) 很有用。
  • 通过 Encoding 转换字符的编码
  • PingReply 由于提供有关 Send 操作的状态及产生的数据的信息。
  • Send 用于将 Internet 控制消息协议 (ICMP) 消息发送到远程计算机并接收来自远程计算机的相应 ICMP 回送答复消息。

运行结果:
https://ithelp.ithome.com.tw/upload/images/20210919/20099494AlE9x4P3LR.png


上一篇
C# 入门之处理用户的输入
下一篇
C#入门之文本处理(上)
系列文
C# 入门32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言