万金流
以码会友。 吾Q:578751655。 水平有限,轻喷,谢!
随笔 - 189,  文章 - 0,  评论 - 7,  阅读 - 14万

Windows的命令行里,ping的用法如下图:

 

 

 C#中,Ping的写法也日趋简单。(教材上的Ping内容需要设置太多内容,本专业不需要掌握)

大致步骤如下:

  1. 创建用于发出ping命令的对象:
    Ping ping = new Ping();

     

  2. 创建用于接收对端主机反馈的对象;
    PingReply pr;

     

  3. 获取对端主机的ip地址(有问题需要报错);
    ip1 = (Dns.GetHostAddresses(args[0]))[0].ToString();

    args[0]表示用控制台执行程序的时候,后面跟的第一个参数。

  4. 理解反馈中各个部分的含义;
    1. pr.Address表示响应的主机
    2. pr.Buffer表示响应的字节,pr.Buffer.Length也就是字节长度
    3. pr.RoundtripTime表示ping包来回所用的时间(ms)
    4. pr.Options.Ttl表示返回报文的TTL值
    5. pr.Status表示ping命令执行的结果,在失败的时候可以用pr.Status.ToString()查看失败原因。
  5. 根据反馈内容给出不同的输出
    if (pr.Status == IPStatus.Success)
                    {
                        Console.WriteLine($"成功的提示");
                    }
                    else
                    {
                        Console.WriteLine($"失败的提示");
                    }

     

可以用Thread.Sleep(1000)每隔一秒发送一个ping包。

大家试着用控制台完成以下效果的程序:

 

 可以试试按照windows下标准ping那样,在命令结束后添加统计信息。

这个功能在winform下又该如何完成呢?

注意:

1、文本框中用“\r\n” 来换行;

2、可以用textBox2.Refresh()在每一次ping完强制刷新结果文本框。

posted on   万金流  阅读(935)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现

点击右上角即可分享
微信分享提示