一、概述

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. 【leetcode算法-简单】26. 删除排序数组中的重复项

    [题目描述] 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完 ...

  2. SecureCRT 配色方案

    整体效果: 一:Options -- Global Options 1.Normal colors     2.Bold colors 二 :Options -- Session Options 1. ...

  3. java - redis学习

    在学习redis之前,我们首先需要了解一下NoSQL(非关系数据库).非关系型数据库通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定. 为什么需要NoSQL? (1) ...

  4. Python——类和对象(二)

    一.实例方法和自动绑定self 在类中定义的实例方法,Python会自动绑定方法的第一个参数(通常是self,下文也默认为self),第一个参数总会指向调用该方法的对象,因为实例方法(包括构造方法)第 ...

  5. Image splicing forgery detection combining coarse to refined convolutional neural network and adaptive clustering

    粗到精的卷积神经网络与自适应聚类相结合的图像拼接篡改检测 研究方向:图像篡改检测 论文出处:ELSEVIER A类 学校:西安电子科技大学网络工程学院.重庆邮电大学计算机科学与技术学院 关键字:Spl ...

  6. Linux 编译kernel有关Kconfig文件详解

    ref : https://blog.csdn.net/Ultraman_hs/article/details/52984929 Kconfig的格式 下面截取/drivers/net下的Kconfi ...

  7. QCache<key,T> 就定义了一个缓存,其类似于map,好处是QCache自动获得被插入对象的所有权,控制所有对象的costs总和(自动管理对象的生存时间。正经数据是不会用到它的,辅助控制才有可能用到它)

    在软件开发中,我们经常需要在内存中存储一些临时数据用于后续相关计算.我们一般把这些数据存储到某个数组里,或者STL中的某个合适的容器中.其实,在Qt中直接为我们提供了一个QCache类专用于这种需求. ...

  8. js 根据 数组条件 简单查询的方法临时保存

    let array = [{ date: '2016-05-02', name: 'Ethan', status: 'success', total: '81' }, { date: '2016-05 ...

  9. PAT-1015 Reversible Primes (20 分) 进制转换+质数

    A reversible prime in any number system is a prime whose "reverse" in that number system i ...

  10. 【爬虫集合】抖音API分析

    1. 分析接口 Charles注册码 Registered Name: https://zhile.io License Key: 48891cf209c6d32bf4 抖音API分析 抖音.猫眼网页 ...