C#中的WebRequest與WebResponse抽象類、DNS靜態(tài)類、Ping類介紹
一、概述
1、WebRequest:
對統(tǒng)一資源標(biāo)識符 (URI) 發(fā)出請求。 這是一個 abstract 類。
WebRequest的派生類:PackWebRequest、FileWebRequest、FtpWebRequest、HttpWebRequest
重要:我們不建議你使用WebRequest或其派生的類的新的開發(fā)。 Net4.5以上請改用System.Net.Http.HttpClient類。
2、WebResponse
提供來自統(tǒng)一資源標(biāo)識符 (URI) 的響應(yīng)。 這是一個 abstract 類。
WebResponse派生類:PackWebResponse、FileWebResponse、FtpWebResponse、HttpWebResponse
客戶端應(yīng)用程序不會創(chuàng)建WebResponse對象直接; 通過調(diào)用WebRequest實例的GetResponse方法來創(chuàng)建。
二、下載
1、同步模式
WebRequest request = WebRequest.Create("http://www.baidu.com");//可以將request強制轉(zhuǎn)換為HttpWebRequest,以設(shè)置和獲取特定的屬性
request.Credentials = CredentialCache.DefaultCredentials;//也可以設(shè)置代理request.Proxy..
request.Timeout = 1000;
WebResponse response = request.GetResponse
();//獲取響應(yīng).有異步方法:Begin/EndGetResponse
Stream stream = response.GetResponseStream();//
獲取響應(yīng)流,讀取響應(yīng)流,進(jìn)行下載
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))//也可以stream.Read(buffer)
{
Console.WriteLine(reader.ReadToEnd());
}2、異步模式
WebRequest request = WebRequest.Create("http://www.baidu.com");//可以將request強制轉(zhuǎn)換為HttpWebRequest,以設(shè)置和獲取特定的屬性
request.BeginGetResponse(ar =>{
WebRequest request_1 = (WebRequest)ar.AsyncState;
WebResponse response = request_1.EndGetResponse(ar);
Stream stream = response.GetResponseStream();//獲取響應(yīng)流
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))//也可以stream.Read(buffer)
{
Console.WriteLine(reader.ReadToEnd());
}
}, request);3、Net4.5以上,Task異步。
void Main()
{
GetResponseAsync();
}
public async void GetResponseAsync()
{
WebRequest request = WebRequest.Create("http://www.baidu.com");//可以將request強制轉(zhuǎn)換為HttpWebRequest,以設(shè)置和獲取特定的屬性
WebResponse response = await request.GetResponseAsync() as WebResponse;
Stream stream = response.GetResponseStream();//獲取響應(yīng)流
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))//也可以stream.Read(buffer)
{
Console.WriteLine(reader.ReadToEnd());
}
}三、上傳:
1、HTTP上傳:
Encoding encoding = Encoding.Default;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.baidu.com");
request.Method = "post";
request.Accept = "text/html, application/xhtml+xml, */*";
request.ContentType = "application/x-www-form-urlencoded";
byte[] buffer = encoding.GetBytes("aaa");
request.ContentLength = buffer.Length;
Stream stream = request.GetRequestStream();//獲取請求流,進(jìn)行寫入流
,進(jìn)行上傳或者異步:Begin/EndGetRequestStream
stream.Write(buffer, 0, buffer.Length);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
Console.WriteLine(reader.ReadToEnd());
}2、FTP上傳文件代碼實現(xiàn):(對于FTP,微軟建議使用第三方工具)
string ftphost = "127.0.0.1";
//here correct hostname or IP of the ftp server to be given
string ftpfullpath = "ftp://" + ftphost + "/testfolder/testfile.xml";
FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(ftpfullpath);
ftp.Credentials = new NetworkCredential("userid", "password");
//userid and password for the ftp server to given
ftp.KeepAlive = true;
ftp.UseBinary = true;
ftp.Method = WebRequestMethods.Ftp.UploadFil;
FileStream fs = File.OpenRead(@"c:\testfile.xml");
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
fs.Close();
Stream ftpstream = ftp.GetRequestStream();
ftpstream.Write(buffer, 0, buffer.Length);
ftpstream.Close();FtpWebRequest與FtpWebResponse完成FTP操作
FTP工具FileZilla、WinSCP、FTP類庫FluentFTP
四、DNS靜態(tài)類
Dns類是一個靜態(tài)類,從 Internet 域名系統(tǒng) (DNS) 中檢索有關(guān)特定主機的信息。
DNS 查詢中的主機信息返回的實例中IPHostEntry類。 如果指定的主機在 DNS 數(shù)據(jù)庫中,有多個條目IPHostEntry包含多個 IP 地址和別名。
1、Dns類方法
- GetHostName() 獲取本地計算機的主機名。
- GetHostAddresses(String) 返回指定主機的 Internet 協(xié)議 (IP) 地址。返回IPAddress[]數(shù)組
- GetHostEntry(String) 將主機名或 IP 地址解析為 IPHostEntry 實例。
- GetHostByAddress(String) 根據(jù) IP 地址創(chuàng)建 IPHostEntry 實例。
- GetHostEntry(IPAddress) 將 IP 地址解析為 IPHostEntry 實例。
- GetHostByAddress(IPAddress) 根據(jù)指定的 IPAddress 創(chuàng)建 IPHostEntry 實例。
- Resolve(String) 將 DNS 主機名或 IP 地址解析為 IPHostEntry 實例。
2、IPHostEntry屬性
- AddressList 獲取或設(shè)置與主機關(guān)聯(lián)的 IP 地址列表。返回IPAddress[]數(shù)組
- Aliases 獲取或設(shè)置與主機關(guān)聯(lián)的別名列表。
- HostName 獲取或設(shè)置主機的 DNS 名稱。
五、Ping類
Ping類位于System.Net.NetworkInformation下。
bool online = false; //是否在線
try
{
Ping ping = new Ping();
PingReply pingReply = ping.Send("192.168.132.191");//主機名或者IP地址
if (pingReply.Status == IPStatus.Success)
{
online = true;
Console.WriteLine("當(dāng)前在線,已ping通!");
}
else
{
Console.WriteLine("不在線,ping不通!");
}
}
catch
{
Console.WriteLine("不在線,ping不通!");
}以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C#使用Dns類實現(xiàn)查詢主機名對應(yīng)IP地址
- c# 如何對網(wǎng)絡(luò)信息進(jìn)行相關(guān)設(shè)置(ip,dns,網(wǎng)關(guān)等)
- C# 兩種方式反編譯修改源碼(dnspy,ildasm & ilasm)
- C#實現(xiàn)一鍵換IP、重置DNS、網(wǎng)關(guān)及掩碼的方法
- C#設(shè)置本地網(wǎng)絡(luò)如DNS、網(wǎng)關(guān)、子網(wǎng)掩碼、IP等等
- C#利用WMI操作DNS服務(wù)器(可遠(yuǎn)程操作,需要相應(yīng)權(quán)限)
- C# System.Net.Dns 使用詳解
相關(guān)文章
WPF開發(fā)之UniformGrid和ItemsControl的應(yīng)用詳解
為了簡化開發(fā),WPF提供了UniformGrid布局和ItemsControl容器,本文以一個簡單的小例子,簡述如何在WPF開發(fā)中應(yīng)用UniformGrid和ItemsControl實現(xiàn)均勻的布局,希望對大家有所幫助2024-01-01
c#中WinForm使用OpencvSharp4實現(xiàn)簡易抓邊
本文主要介紹了c#中WinForm使用OpencvSharp4實現(xiàn)簡易抓邊,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05
WinForm通過操作注冊表實現(xiàn)限制軟件使用次數(shù)的方法
這篇文章主要介紹了WinForm通過操作注冊表實現(xiàn)限制軟件使用次數(shù)的方法,結(jié)合實例形式分析了WinForm操作注冊表的原理、步驟與相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2017-06-06

