一、概述

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 = ; WebResponse response =

request.GetResponse

();//获取响应.有异步方法:Begin/EndGetResponse
Stream 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/EndGetRequestStream

stream.Write(buffer,

, 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.UploadFile;
FileStream fs = File.OpenRead(@"c:\testfile.xml");
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, , buffer.Length);
fs.Close();
Stream ftpstream = ftp.GetRequestStream();
ftpstream.Write(buffer, , 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不通!");
}

WebRequest与WebResponse抽象类,DNS静态类、Ping类的更多相关文章

  1. 定义类、System.Object对象、构造函数与析构函数、抽象类与静态类

    一.类定义 class MyClass { //类成员 } 1.访问级别 默认访问级别为internal(内部类),也可以是public(公共类) internal(内部类):当前项目中的代码才能访问 ...

  2. 【C# 基础概念】抽象类、密封类及类成员

    使用 abstract 关键字可以创建不完整且必须在派生类中实现的类和 class 成员. 使用 sealed 关键字可以防止继承以前标记为 virtual 的类或某些类成员. abstract修饰符 ...

  3. 【转】C++ 虚函数&纯虚函数&抽象类&接口&虚基类

    1. 动态多态 在面向对象语言中,接口的多种不同实现方式即为多态.多态是指,用父类的指针指向子类的实例(对象),然后通过父类的指针调用实际子类的成员函数. 多态性就是允许将子类类型的指针赋值给父类类型 ...

  4. C++ 虚函数&纯虚函数&抽象类&接口&虚基类(转)

    http://www.cnblogs.com/fly1988happy/archive/2012/09/25/2701237.html 1. 多态 在面向对象语言中,接口的多种不同实现方式即为多态.多 ...

  5. (39)C#Ping类

    一.Ping类 引用命名空间 using System.Net.NetworkInformation 控制台版 using System; using System.Collections.Gener ...

  6. vs中找到接口和抽象类的具体实现类

    如何找到接口和抽象类的具体实现类 1,可以使用:ctrl+k clrl+t打开调用层次结构窗口: 2,移动到实现节点: 3,然后可以转到具体实现: 第二种安装插件 ReSharper 第三种方法: 在 ...

  7. Java入门教程十(抽象类接口内部类匿名类)

    抽象类(abstract) 一个类只定义了一个为所有子类共享的一般形式,至于细节则交给每一个子类去实现,这种类没有任何具体的实例,只具有一些抽象的概念,那么这样的类称为抽象类. 在面向对象领域,抽象类 ...

  8. PowerShell_零基础自学课程_9_高级主题:静态类和类的操作

    上次我们说到了,wmi对象和com组件,今天我们继续来看PS中对象的相关内容.主要说一下静态对象和对象的基本操作. 一.静态对象 在PS中有一类特殊的对象,我们不能同过这些类创建新的对象,这些类是不能 ...

  9. C++多态、虚函数、纯虚函数、抽象类、虚基类

    一.C++多态 C++的多态包括静态多态和动态多态.静态多态包括函数重载和泛型编程,动态多态包括虚函数.静态多态是指在编译期间就可以确定,动态多态是指在程序运行时才能确定. 二.虚函数 1.虚函数为类 ...

随机推荐

  1. alertmanager的web页面显示UTC时间的问题

    1.http://192.168.1.144:9093/#/alerts 显示的告警时间是UTC时间 2.脚本的变量 {"status":"success"}[ ...

  2. php控制访问人数的方法

    php控制访问人数的方法 <pre>//添加访问人数 public function addfangwen() { header("Content-type:text/html; ...

  3. Erlang:[笔记三,构建工具rebar之使用依赖]

    概述 类似Java中的Maven,Gradle,在Erlang中同样也有包管理的工具,Rebar提供Erlang依赖(包)管理机制,开发人员可以重复使用已有的模块,通过rebar引入自己的项目直接使用 ...

  4. kettle工具的介绍和使用

    kettle详解(数据抽取.转换.装载) 原文地址链接:https://blog.csdn.net/qq_35731570/article/details/71123413   一:下载路径 当你要学 ...

  5. 怎样在网页中嵌入JS代码

    有四种方法: 方法1: 在<script>标签内直接写代码 <body> <button id="btn">click</button&g ...

  6. [Vue]vue中路由重定向redirect

    1.重定向的地址不需要接收参数 const routes = [ { path: '/', redirect: '/index'}, { path: '/index', component: inde ...

  7. (二十一)JSP基础

    定义 JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. JSP这门技术的最大的特点在于,写jsp就像在写html,但它相 ...

  8. (八)装配Bean(2)

    二.在Java类中进行显式的装配 显式配置有两种: 1. 一种是在java(本文讲解)   2. 另一种是xml配置文件(第一章有讲) 案例一: 使用java显式装配+@autowired自动装配的方 ...

  9. (十一)SpringBoot之文件上传以及

    一.案例 1.1 配置application.properties #主配置文件,配置了这个会优先读取里面的属性覆盖主配置文件的属性 spring.profiles.active=dev server ...

  10. tf 2.0

    tf.function和Autograph使用指南-Part 1 "Keras之父发声:TF 2.0 + Keras 深度学习必知的12件事" Effective TensorFl ...