程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 在dotnet下用c#編寫下載器(1)

在dotnet下用c#編寫下載器(1)

編輯:關於C語言

System.Net.WebClient client=new WebClIEnt();
byte[] page=clIEnt.DownloadData(http://www.bianceng.cn);
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一樣可以用正則表達式。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved