dotnet下用c#製作下載工具

System.Net.WebClient client=new WebClient();
   byte[] page=client.DownloadData("http://www.google.com");
   string content=System.Text.Encoding.UTF8.GetString(page);

在dotnet下經常使用此類方法

 string hostName="www.nnn.net";
   label1.Text="xxx";
   int port=80;
   IPHostEntry ipInfo=Dns.GetHostByName(hostName);
   //取得IPAddress[]
   IPAddress[] ipAddr=ipInfo.AddressList;
   //得到ip
   IPAddress ip=ipAddr[0];
   IPEndPoint hostEP=new IPEndPoint(ip,port);
   Socket socket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); 
   
    socket.Connect(hostEP); 

   string sendStr="GET "+"/tryst/default.asp"+" 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);
   socket.Send(bytesSendStr,bytesSendStr.Length,0);
   //聲明接收返回內容的字符串
   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);
   }

 


socket 方式以及模型:

不能看出跟程序的匹配,下載都是客戶機的機制,解釋出地址後,聲明socket,發送一段報文,返回信息

報文string sendStr="GET "+"/tryst/default.asp"+" HTTP/1.1/r/nHost: " + hostName + "/r/nConnection: Close/r/n/r/n";
用get方式,得到網站裏的某一個頁面,如果想得到網頁信息與webclient一樣可以用正則表達式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章