一、概述

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. 在eNSP上配置VLAN的Trunk端口

    1.实验内容:在不同交换机下不同部门的员工能够互相通信,需要配置交换机之间的链路,跨交换机实现VLAN间通信 2.实验拓扑图 3.实验配置 按照实验编址表编辑配置所有PC机的IP地址 编址表如下图: ...

  2. linux环境启动rocketmq服务 报connect to <10.4.86.6:10909> failed异常

    解决方式: 需要给Producer和Consumer的DefaultMQPushConsumer对象set这个参数,生产者和消费者都需要,否则不能正常消费消息: 这个问题解决后可能还会出现: conn ...

  3. 强制执行父类下的__init__

    两种方式: 1.super(子类,self)__init__() 2.子类.__init__(self) 推荐使用super

  4. uwp,c#,全屏播放保持屏幕响应

    在开发视频app的时候,全屏播放一段时间内没有电脑操作,电脑会自动进入睡眠模式,这时就要多写些代码来保持响应了. (这里使用的是MediaElement播放控件,MediaElement需要手动添加代 ...

  5. ElasticSearch总结

    转载自:https://www.cnblogs.com/WessonStar/p/8296781.html 不过我的es版本是7.2.0,然后这里要注意ik分词器放入plugins里是需要有个ik插件 ...

  6. Python基础系列讲解——时间模块详解大全之time模块

    Python中提供处理时间日期相关的内置模块有time.datetime和calendar. time模块中大多数函数调用了所在平台C library 的同名函数,因此更依赖于操作系统层面,所以tim ...

  7. LC 173. Binary Search Tree Iterator

    题目描述 Implement an iterator over a binary search tree (BST). Your iterator will be initialized with t ...

  8. Python——类和对象(一)

    一.定义类 在面向对象的程序设计中有两种重要概念: 类:可以理解为一个种类,一个模型,是一种抽象的东西. 实例.对象:可以理解为一种具体制作或者存在的东西. 定义类的语法格式如下: class 类名: ...

  9. java 用户线程和守护线程

    在Java中通常有两种线程:用户线程和守护线程(也被称为服务线程)通过Thread.setDaemon(false)设置为用户线程通过Thread.setDaemon(true)设置为守护线程线程属性 ...

  10. SAS学习笔记22 t检验、卡方检验