最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#中的WebRequest與WebResponse抽象類、DNS靜態(tài)類、Ping類介紹

 更新時(shí)間:2022年05月16日 15:34:25   作者:springsnow  
這篇文章介紹了C#中的WebRequest與WebResponse抽象類、DNS靜態(tài)類、Ping類,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一、概述

1、WebRequest:

對(duì)統(tǒng)一資源標(biāo)識(shí)符 (URI) 發(fā)出請(qǐng)求。 這是一個(gè) abstract 類。
WebRequest的派生類:PackWebRequest、FileWebRequest、FtpWebRequest、HttpWebRequest

重要:我們不建議你使用WebRequest或其派生的類的新的開發(fā)。 Net4.5以上請(qǐng)改用System.Net.Http.HttpClient類。

2、WebResponse

提供來自統(tǒng)一資源標(biāo)識(shí)符 (URI) 的響應(yīng)。 這是一個(gè) abstract 類。
WebResponse派生類:PackWebResponse、FileWebResponse、FtpWebResponse、HttpWebResponse

客戶端應(yīng)用程序不會(huì)創(chuàng)建WebResponse對(duì)象直接; 通過調(diào)用WebRequest實(shí)例的GetResponse方法來創(chuàng)建。

二、下載

1、同步模式

WebRequest request = WebRequest.Create("http://www.baidu.com");//可以將request強(qiáng)制轉(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強(qiáng)制轉(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強(qiáng)制轉(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();//獲取請(qǐng)求流,進(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上傳文件代碼實(shí)現(xiàn):(對(duì)于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類庫(kù)FluentFTP

四、DNS靜態(tài)類

Dns類是一個(gè)靜態(tài)類,從 Internet 域名系統(tǒng) (DNS) 中檢索有關(guān)特定主機(jī)的信息。

DNS 查詢中的主機(jī)信息返回的實(shí)例中IPHostEntry類。 如果指定的主機(jī)在 DNS 數(shù)據(jù)庫(kù)中,有多個(gè)條目IPHostEntry包含多個(gè) IP 地址和別名。

1、Dns類方法

  • GetHostName()    獲取本地計(jì)算機(jī)的主機(jī)名。
  • GetHostAddresses(String)    返回指定主機(jī)的 Internet 協(xié)議 (IP) 地址。返回IPAddress[]數(shù)組
  • GetHostEntry(String)    將主機(jī)名或 IP 地址解析為 IPHostEntry 實(shí)例。
  • GetHostByAddress(String)    根據(jù) IP 地址創(chuàng)建 IPHostEntry 實(shí)例。
  • GetHostEntry(IPAddress)    將 IP 地址解析為 IPHostEntry 實(shí)例。
  • GetHostByAddress(IPAddress)    根據(jù)指定的 IPAddress 創(chuàng)建 IPHostEntry 實(shí)例。
  • Resolve(String)    將 DNS 主機(jī)名或 IP 地址解析為 IPHostEntry 實(shí)例。

2、IPHostEntry屬性

  • AddressList    獲取或設(shè)置與主機(jī)關(guān)聯(lián)的 IP 地址列表。返回IPAddress[]數(shù)組
  • Aliases    獲取或設(shè)置與主機(jī)關(guān)聯(lián)的別名列表。
  • HostName    獲取或設(shè)置主機(jī)的 DNS 名稱。

五、Ping類

Ping類位于System.Net.NetworkInformation下。

bool online = false; //是否在線
try
{

    Ping ping = new Ping();
    PingReply pingReply = ping.Send("192.168.132.191");//主機(jī)名或者IP地址
    if (pingReply.Status == IPStatus.Success)
    {
        online = true;
        Console.WriteLine("當(dāng)前在線,已ping通!");
    }
    else
    {
        Console.WriteLine("不在線,ping不通!");
    }
}
catch
{
    Console.WriteLine("不在線,ping不通!");
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • WPF開發(fā)之UniformGrid和ItemsControl的應(yīng)用詳解

    WPF開發(fā)之UniformGrid和ItemsControl的應(yīng)用詳解

    為了簡(jiǎn)化開發(fā),WPF提供了UniformGrid布局和ItemsControl容器,本文以一個(gè)簡(jiǎn)單的小例子,簡(jiǎn)述如何在WPF開發(fā)中應(yīng)用UniformGrid和ItemsControl實(shí)現(xiàn)均勻的布局,希望對(duì)大家有所幫助
    2024-01-01
  • c#實(shí)現(xiàn)ini文件讀寫類分享

    c#實(shí)現(xiàn)ini文件讀寫類分享

    c#實(shí)現(xiàn)ini文件讀寫類分享,大家參考使用吧
    2013-12-12
  • c#中WinForm使用OpencvSharp4實(shí)現(xiàn)簡(jiǎn)易抓邊

    c#中WinForm使用OpencvSharp4實(shí)現(xiàn)簡(jiǎn)易抓邊

    本文主要介紹了c#中WinForm使用OpencvSharp4實(shí)現(xiàn)簡(jiǎn)易抓邊,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • C#中的委托和事件

    C#中的委托和事件

    這篇文章介紹了C#中的委托和事件,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • 不用IDE寫C#的Hello World的方法

    不用IDE寫C#的Hello World的方法

    這篇文章主要介紹了不用IDE寫C#的Hello World的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2015-10-10
  • C#實(shí)現(xiàn)異步的常用方式總結(jié)

    C#實(shí)現(xiàn)異步的常用方式總結(jié)

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)異步的幾個(gè)常用方式,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下
    2023-05-05
  • C#實(shí)現(xiàn)自定義定時(shí)組件的方法

    C#實(shí)現(xiàn)自定義定時(shí)組件的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)自定義定時(shí)組件的方法,很實(shí)用的功能,需要的朋友可以參考下
    2014-08-08
  • 淺談Unity腳本生命周期與執(zhí)行順序

    淺談Unity腳本生命周期與執(zhí)行順序

    在Unity中,腳本可以理解為附加在游戲?qū)ο笊系挠糜诙x游戲?qū)ο笮袨榈闹噶畲a。必須綁定在游戲?qū)ο笊喜拍荛_始它的生命周期。游戲?qū)ο罂梢岳斫鉃槟苋菁{各種組件的容器,游戲?qū)ο蟮乃薪M件一起決定了這個(gè)對(duì)象的行為和游戲中的表現(xiàn)
    2021-06-06
  • C# 多線程更新界面的錯(cuò)誤的解決方法

    C# 多線程更新界面的錯(cuò)誤的解決方法

    這篇文章主要介紹了C# 多線程更新界面的錯(cuò)誤方法,由于一個(gè)線程的程序,如果調(diào)用一個(gè)功能是阻塞的,那么就會(huì)影響到界面的更新,導(dǎo)致使用人員操作不便。所以往往會(huì)引入雙線程的工作的方式,主線程負(fù)責(zé)更新界面和調(diào)度,而次線程負(fù)責(zé)做一些阻塞的工作,便有了下面春雨里方法
    2021-10-10
  • WinForm通過操作注冊(cè)表實(shí)現(xiàn)限制軟件使用次數(shù)的方法

    WinForm通過操作注冊(cè)表實(shí)現(xiàn)限制軟件使用次數(shù)的方法

    這篇文章主要介紹了WinForm通過操作注冊(cè)表實(shí)現(xiàn)限制軟件使用次數(shù)的方法,結(jié)合實(shí)例形式分析了WinForm操作注冊(cè)表的原理、步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-06-06

最新評(píng)論

文昌市| 平度市| 泗阳县| 安义县| 四川省| 慈利县| 云梦县| 上饶县| 新宁县| 东平县| 淳安县| 根河市| 东乡县| 平昌县| 宜春市| 迁西县| 措美县| 酒泉市| 古丈县| 晋江市| 霸州市| 盐源县| 扬中市| 曲靖市| 磐石市| 呈贡县| 靖江市| 剑河县| 铁岭市| 重庆市| 大余县| 黄浦区| 赤峰市| 岳阳县| 荔波县| 江源县| 天门市| 那曲县| 全南县| 晋宁县| 恭城|