c# – 为什么我得到PingException?
|
这一切都是在一小时前和很多天前完成的.
我尝试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:
然后在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需要
因此,您只能传入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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
