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