各位老大,我问个问题啊
using System;
using System.Collections;
using System.Net;
namespace ConsoleApplication1
{
/// <summary>
/// 类名:ResolvDNS
/// 作用:关于IP的操作
/// </summary>
class ResolvDNS
{
IPAddress[] m_arrIPs;
public void Resovle(string strhost)
{
IPHostEntry iphe=Dns.GetHostByName(strhost);
m_arrIPs=iphe.AddressList;
}
public IPAddress this[int nIndex] {
get
{
return m_arrIPs[nIndex];
}
}
public int Count //返回IP个数
{
get
{
return m_arrIPs.Length;
}
}
}
public class Class1
{
static void Main(string[] args)
{
Console.WriteLine("Please Input Web Address:");
string getDNS = Console.ReadLine();
ResolvDNS myDNS = new ResolvDNS();
myDNS.Resovle(getDNS);
int nCount = myDNS.Count;
Console.WriteLine("Found {0} IP Address at HostName!",nCount);
for(int i=0; i < nCount; i++)
{
Console.WriteLine("第{0}个地址是{1}",i,myDNS[i]);
}
}
}
}
请问为什么我在输入网址后就出错呢 ?
问题点数:20、回复次数:9Top
1 楼Firestone2003(笨笨小猪)回复于 2004-09-02 22:49:28 得分 0
报什么错啊??
Top
2 楼sunkangta(●●●●●)回复于 2004-09-02 22:53:19 得分 0
Please Input Web Address:
http://www.163.com
未处理的异常: System.Net.Sockets.SocketException: 请求的名称有效,但是没有找到
请求的类型的数据。
at System.Net.Dns.GetHostByName(String hostName)
at ConsoleApplication1.ResolvDNS.Resovle(String strhost) in e:\cpp\consoleapp
lication1\class1.cs:line 18
at ConsoleApplication1.Class1.Main(String[] args) in e:\cpp\consoleapplicatio
n1\class1.cs:line 44
Top
3 楼Firestone2003(笨笨小猪)回复于 2004-09-02 22:59:31 得分 10
测试了一下
输入可查询的网址没有报错
输入不可查询的网址报错了
主要是你的程序没有异常处理
IPHostEntry iphe=Dns.GetHostByName(strhost);
m_arrIPs=iphe.AddressList;
把这个修改一下
try
{
IPHostEntry iphe=Dns.GetHostByName(strhost);
m_arrIPs=iphe.AddressList;
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
return;
}
Top
4 楼Firestone2003(笨笨小猪)回复于 2004-09-02 23:00:09 得分 0
你的输入应该是这样的
www.163.com
不用加上httpTop
5 楼yhcs(风中的小刀)回复于 2004-09-02 23:05:11 得分 5
agree Firestone2003(笨笨小猪) 的
刚刚测试了一下
---------------
Please Input Web Address:
www.163.com
Found 10 IP Address at HostName!
第0个地址是202.106.168.109
第1个地址是202.106.168.121
第2个地址是202.108.36.153
第3个地址是202.108.36.155
第4个地址是202.108.36.156
第5个地址是202.108.36.167
第6个地址是202.108.36.172
第7个地址是202.108.36.196
第8个地址是202.106.168.103
第9个地址是202.106.168.104Top
6 楼sunkangta(●●●●●)回复于 2004-09-02 23:08:01 得分 0
晕~原来不能加http://,
可是万一别人输入了“http://”怎么办呢?
怎么去?Top
7 楼sunkangta(●●●●●)回复于 2004-09-02 23:11:06 得分 0
看了Firestone2003(笨笨小猪) 的解决方法,搞定了,谢谢哦Top
8 楼sunkangta(●●●●●)回复于 2004-09-02 23:15:41 得分 0
不过还是弹出
未处理的异常: System.Net.Sockets.SocketException: 请求的名称有效,但是没有找到
请求的类型的数据。
at System.Net.Dns.GetHostByName(String hostName)
at ConsoleApplication1.ResolvDNS.Resovle(String strhost) in e:\cpp\consoleapp
lication1\class1.cs:line 18
at ConsoleApplication1.Class1.Main(String[] args) in e:\cpp\consoleapplicatio
n1\class1.cs:line 44
这个,有方法把他屏蔽掉吗?Top
9 楼hnhl(荒凉)回复于 2004-09-02 23:29:07 得分 5
应该校验输入的网址,另要做异常处理Top




