【问题标题】:Making a "ping" inside of my C# application在我的 C# 应用程序中进行“ping”
【发布时间】:2010-01-27 00:32:37
【问题描述】:

我需要我的应用程序对稍后指定的地址进行 ping 操作,只需将平均 ping 时间复制到标签的 .Text 即可。

有什么帮助吗?

编辑:

如果有人感兴趣,我找到了解决方案:

Ping pingClass = new Ping();        
PingReply pingReply = pingClass.Send("logon.chronic-domination.com");
label4.Text = (pingReply.RoundtripTime.ToString() + "ms");

【问题讨论】:

  • 添加您的答案和指向相关 MSDN 文档的链接作为正确答案,而不是更新问题。您可以通过这种方式获得声誉,并使 QA 的格式保持一致。相关MSDN链接:msdn.microsoft.com/en-us/library/…

标签: c# ping


【解决方案1】:

看看NetworkInformation.Ping 类。

一个例子:

用法:

PingTimeAverage("stackoverflow.com", 4);

实施:

public static double PingTimeAverage(string host, int echoNum)
{
    long totalTime = 0;
    int timeout = 120;
    Ping pingSender = new Ping ();

    for (int i = 0; i < echoNum; i++)
    { 
        PingReply reply = pingSender.Send (host, timeout);
        if (reply.Status == IPStatus.Success)
        {
            totalTime += reply.RoundtripTime;
        }
    }
    return totalTime / echoNum;
}

【讨论】:

  • PingTimeAverage ("i.dont.exist.com", 1000) == 0
  • @Anton,如果无法解析主机,Ping.Send方法会抛出PingException...is.gd/2hLjo
  • @CMS 我已经尝试为 Ping() 复制一个小测试,并且使用“hostname.com”对任何东西都不起作用,stackoverflow.com/google.com 或其他任何东西。 Ping 工作的唯一时间是使用实际 IP。 Ping 的MSDN 表示您可以使用主机名...
【解决方案2】:

只是作为旁注。 sourceforge 上已经有一个项目在做你想要的。这还包括 ICMP (RFC 792) 的实现

Sourceforge Project

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-13
    • 2013-01-12
    • 2011-07-18
    • 2012-09-19
    • 2015-12-07
    • 2010-10-18
    • 2011-10-05
    • 2017-04-14
    相关资源
    最近更新 更多