加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 为什么我得到PingException?

发布时间:2020-12-15 07:55:41 所属栏目:百科 来源:网络整理
导读:这一切都是在一小时前和很多天前完成的. 我尝试ping的链接是: Link to ping 这是form1中的代码: nc = new NetworkConnection();bool bval = nc.PingConnection(satellite_address);if (bval){ label19.Visible = true; label19.Text = "Internet Access";}
这一切都是在一小时前和很多天前完成的.
我尝试ping的链接是:

Link to ping

这是form1中的代码:

nc = new NetworkConnection();
bool bval = nc.PingConnection(satellite_address);

if (bval)
{
    label19.Visible = true;
    label19.Text = "Internet Access";
}
else
{
    label19.Visible = true;
    label19.Text = "No Internet Access";
}

当它试图执行此行时:

bool bval = nc.PingConnection(satellite_address);

它将进入nc类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.NetworkInformation;
using System.IO;
using System.Windows.Forms;

namespace mws
{
    class NetworkConnection
    {
        public NetworkConnection()
        {    
        }

        public bool PingConnection(string url)
        {
            bool Result = false;

            using (Ping pp = new Ping())
            {
                byte[] buffer = Encoding.ASCII.GetBytes("samplestring");
                int timeout = 120;

                try
                {
                    PingReply reply = pp.Send(url,timeout,buffer);
                    if (reply.Status == IPStatus.Success)
                        Result = true;
                }
                catch (Exception)
                {
                    Result = false;
                }
            }
            return Result;
        }
    }
}

在尝试执行该行时在nc类中:

PingReply reply = pp.Send(url,buffer);

它跳转到catch块并抛出PingException:

An exception occurred during a Ping request

然后在Form1中返回的结果是没有互联网访问,但有互联网,我可以冲浪到网址没有问题.

这是完整的异常消息:

System.Net.NetworkInformation.PingException was caught
  HResult=-2146233079
  Message=An exception occurred during a Ping request.
  Source=System
  StackTrace:
       at System.Net.NetworkInformation.Ping.Send(String hostNameOrAddress,Int32 timeout,Byte[] buffer,PingOptions options)
       at System.Net.NetworkInformation.Ping.Send(String hostNameOrAddress,Byte[] buffer)
       at mws.NetworkConnection.PingConnection(String url) in d:C-SharpDownload FileDownloading-File-Project-Version-012Downloading FileNetworkConnection.cs:line 33
  InnerException: System.Net.Sockets.SocketException
       HResult=-2147467259
       Message=No such host is known
       Source=System
       ErrorCode=11001
       NativeErrorCode=11001
       StackTrace:
            at System.Net.Dns.GetAddrInfo(String name)
            at System.Net.Dns.InternalGetHostByName(String hostName,Boolean includeIPv6)
            at System.Net.Dns.GetHostAddresses(String hostNameOrAddress)
            at System.Net.NetworkInformation.Ping.Send(String hostNameOrAddress,PingOptions options)
       InnerException:

第33行是:

PingReply reply = pp.Send(url,buffer);

这个例外出现的原因是什么?在我的节目现在为一些人工作之前它没有出现.

我应该怎样或怎么处理它?

解决方法

您无法将完整URL传递给Ping类的 Send方法.参数字符串hostNameOrAddress需要

A String that identifies the computer that is the destination for the ICMP echo message. The value specified for this parameter can be a host name or a string representation of an IP address.

因此,您只能传入www.sat24.com或主机82.94.176.100的IP(取自CommandLine ping www.sat24.com).

如果要将完整URL传递给方法,则需要从该URL中提取主机以执行Ping.对于这种情况,你可以参加Uri课程

Uri uri = new Uri(url);
PingReply reply = pp.Send(uri.Host,buffer);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读