c#中的webrequest与webresponse抽象类、dns静态类、ping类实例分析-亚博电竞手机版

c#中的webrequest与webresponse抽象类、dns静态类、ping类实例分析

今天小编给大家分享一下c#中的webrequest与webresponse抽象类、dns静态类、ping类实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

一、概述

1、webrequest:

对统一资源标识符 (uri) 发出请求。 这是一个 abstract 类。
webrequest的派生类:packwebrequest、filewebrequest、ftpwebrequest、httpwebrequest

重要:我们不建议你使用webrequest或其派生的类的新的开发。 net4.5以上请改用system.net.http.httpclient类。

2、webresponse

提供来自统一资源标识符 (uri) 的响应。 这是一个 abstract 类。
webresponse派生类:packwebresponse、filewebresponse、ftpwebresponse、httpwebresponse

客户端应用程序不会创建webresponse对象直接; 通过调用webrequest实例的getresponse方法来创建。

二、下载

1、同步模式

webrequest request = webrequest.create("http://www.baidu.com");//可以将request强制转换为httpwebrequest,以设置和获取特定的属性request.credentials = credentialcache.defaultcredentials;//也可以设置代理request.proxy..request.timeout = 1000;webresponse response = request.getresponse();//获取响应.有异步方法:begin/endgetresponsestream stream = response.getresponsestream();//获取响应流,读取响应流,进行下载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强制转换为httpwebrequest,以设置和获取特定的属性request.begingetresponse(ar =>{    webrequest request_1 = (webrequest)ar.asyncstate;    webresponse response = request_1.endgetresponse(ar);    stream stream = response.getresponsestream();//获取响应流    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强制转换为httpwebrequest,以设置和获取特定的属性    webresponse response = await request.getresponseasync() as webresponse;    stream stream = response.getresponsestream();//获取响应流    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();//获取请求流,进行写入流,进行上传或者异步:begin/endgetrequeststreamstream.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上传文件代码实现:(对于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静态类

dns类是一个静态类,从 internet 域名系统 (dns) 中检索有关特定主机的信息。

dns 查询中的主机信息返回的实例中iphostentry类。 如果指定的主机在 dns 数据库中,有多个条目iphostentry包含多个 ip 地址和别名。

1、dns类方法

  • gethostname()    获取本地计算机的主机名。

  • gethostaddresses(string)    返回指定主机的 internet 协议 (ip) 地址。返回ipaddress[]数组

  • gethostentry(string)    将主机名或 ip 地址解析为 iphostentry 实例。

  • gethostbyaddress(string)    根据 ip 地址创建 iphostentry 实例。

  • gethostentry(ipaddress)    将 ip 地址解析为 iphostentry 实例。

  • gethostbyaddress(ipaddress)    根据指定的 ipaddress 创建 iphostentry 实例。

  • resolve(string)    将 dns 主机名或 ip 地址解析为 iphostentry 实例。

2、iphostentry属性

  • addresslist    获取或设置与主机关联的 ip 地址列表。返回ipaddress[]数组

  • aliases    获取或设置与主机关联的别名列表。

  • hostname    获取或设置主机的 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("当前在线,已ping通!");    }    else    {        console.writeline("不在线,ping不通!");    }}catch{    console.writeline("不在线,ping不通!");}

以上就是“c#中的webrequest与webresponse抽象类、dns静态类、ping类实例分析”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注恰卡编程网行业资讯频道。

展开全文
内容来源于互联网和用户投稿,文章中一旦含有亚博电竞手机版的联系方式务必识别真假,本站仅做信息展示不承担任何相关责任,如有侵权或涉及法律问题请联系亚博电竞手机版删除

最新文章

网站地图