下面的程序段实现Web页面下载功能。如果主机名输入www.sohu.com运行到IPHostEntry  ipInfo=Dns.GetHostByName(hostName);时出现异常:
An unhandled exception of type 'System.Net.Sockets.SocketException' occurred in system.dll
Additional information: 不知道这样的主机。如果主机名输入http://developer.ccidnet.com/pub/disp/Article?columnID=295&articleID=12839&pageNO=1出现异常:
An unhandled exception of type 'System.Net.Sockets.SocketException' occurred in system.dll
Additional information: 请求的名称有效并且在数据库中找到,但是它没有相关的正确的数据来被解析。请问怎么样解决?
 实现此功能的主要源代码如下: //"开始"按钮事件
private  void  button1_Click(object  sender,  System.EventArgs  e) {
  //取得预保存的文件名
  string  fileName=textBox3.Text.Trim();
  //远程主机
  string  hostName=textBox1.Text.Trim();
  //端口
  int  port=Int32.Parse(textBox2.Text.Trim());
  //得到主机信息
  IPHostEntry  ipInfo=Dns.GetHostByName(hostName);
  //取得IPAddress[]
  IPAddress[]  ipAddr=ipInfo.AddressList;
  //得到ip
  IPAddress  ip=ipAddr[0];
  //组合出远程终结点
  IPEndPoint  hostEP=new  IPEndPoint(ip,port);
  //创建Socket  实例
  Socket  socket=new  Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
  try
  {
  //尝试连接
  socket.Connect(hostEP);
  }
  catch(Exception  se)
  {
  MessageBox.Show("连接错误"+se.Message,"提示信息
  ,MessageBoxButtons.RetryCancel,MessageBoxIcon.Information); 
}
//发送给远程主机的请求内容串
string  sendStr="GET  /  HTTP/1.1\r\nHost:  "  +  hostName  + 
"\r\nConnection:  Close\r\n\r\n";
  //创建bytes字节数组以转换发送串
  byte[]  bytesSendStr=new  byte[1024];
  //将发送内容字符串转换成字节byte数组
  bytesSendStr=Encoding.ASCII.GetBytes(sendStr); 
try
{
//向主机发送请求
socket.Send(bytesSendStr,bytesSendStr.Length,0);
}
catch(Exception  ce)
  {
  MessageBox.Show("发送错误:"+ce.Message,"提示信息
  ,MessageBoxButtons.RetryCancel,MessageBoxIcon.Information);
  }
  //声明接收返回内容的字符串
  string  recvStr="";
  //声明字节数组,一次接收数据的长度为1024字节
  byte[]  recvBytes=new  byte[1024];
  //返回实际接收内容的字节数
  int  bytes=0; 
//循环读取,直到接收完所有数据
while(true)
{
bytes=socket.Receive(recvBytes,recvBytes.Length,0);
//读取完成后退出循环
if(bytes<=0)
break;
//将读取的字节数转换为字符串
recvStr+=Encoding.ASCII.GetString(recvBytes,0,bytes);
}
//将所读取的字符串转换为字节数组
byte[]  content=Encoding.ASCII.GetBytes(recvStr);
  try
  {
  //创建文件流对象实例
  FileStream  fs=new  FileStream(fileName,FileMode.OpenOrCreate,FileAccess.ReadWrite); 
//写入文件
fs.Write(content,0,content.Length);
}
catch(Exception  fe)
  {
  MessageBox.Show("文件创建/写入错误:"+fe.Message,"提示信息",MessageBoxButtons.RetryCancel,MessageBoxIcon.Information);
  }
  //禁用Socket
  socket.Shutdown(SocketShutdown.Both);
  //关闭Socket
  socket.Close();
  }
  }