在dotnet下用c#編寫下載器
來源:互聯網
上載者:User
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一樣可以用Regex
http://liuxiaoyi666.cnblogs.com/archive/2006/06/02/415826.html