返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#中的WebRequest与WebResponse抽象类、DNS静态类、Ping类介绍
  • 376
分享到

C#中的WebRequest与WebResponse抽象类、DNS静态类、Ping类介绍

2024-04-02 19:04:59 376人浏览 泡泡鱼
摘要

一、概述 1、WEBRequest: 对统一资源标识符 (URI) 发出请求。 这是一个 abstract 类。WebRequest的派生类:PackWebRequest、FileW

一、概述

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/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, 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不通!");
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: C#中的WebRequest与WebResponse抽象类、DNS静态类、Ping类介绍

本文链接: https://lsjlt.com/news/148919.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C#中的WebRequest与WebResponse抽象类、DNS静态类、Ping类介绍
    一、概述 1、WebRequest: 对统一资源标识符 (URI) 发出请求。 这是一个 abstract 类。WebRequest的派生类:PackWebRequest、FileW...
    99+
    2024-04-02
  • C#中的WebRequest与WebResponse抽象类、DNS静态类、Ping类实例分析
    今天小编给大家分享一下C#中的WebRequest与WebResponse抽象类、DNS静态类、Ping类实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后...
    99+
    2023-06-30
  • C#抽象类的用法介绍
    假设有2个类,一个类是主力球员,一个类是替补球员。 public class NormalPlayer { public int ID { get; ...
    99+
    2024-04-02
  • C++抽象数据类型介绍
    公众号:Coder梁(ID:Coder_LT) 我们在学数据结构的时候,经常遇到的一个概念就是抽象数据类型(Abstract Data Type),简称ADT。 维基百科中的定义是:...
    99+
    2024-04-02
  • Java接口的继承与抽象类介绍
    这篇文章主要讲解了“Java接口的继承与抽象类介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java接口的继承与抽象类介绍”吧!在实施接口中,我们利用interface语法,将inter...
    99+
    2023-06-02
  • C/C++中抽象类详解及其作用介绍
    目录概述抽象类 vs 具体类案例抽象类的作用总结概述 抽象类 (abstract class), 是一些不用来定义对象, 而只作为基类被继承的类. 由于抽象类常用作基类, 所以通常称...
    99+
    2024-04-02
  • Java中抽象类和接口介绍
    目录1、抽象类1.1 什么是抽象类?1.2 抽象类属于什么类型?1.3 抽象类怎么定义?1.4 抽象方法2、接口2.1 关于接口2.2 接口怎么定义?2.3 接口基础语法总结1、抽象...
    99+
    2024-04-02
  • java中staticclass静态类的实例介绍
    这篇文章主要讲解了“java中staticclass静态类的实例介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java中staticclass静态类的实例介绍”吧!一般情况下是不可以用s...
    99+
    2023-05-30
    java
  • C++的类与C#的类详细介绍
    本篇内容介绍了“C++的类与C#的类详细介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!许多编程人员学习C++总结经验为,有的觉得C++语...
    99+
    2023-06-17
  • Python中的接口类与抽象类
    面向对象中的继承有两种用途:1)可以通过继承做到代码重用,并完成扩展;2)接口继承。所谓的接口继承就是定义一个接口类 Interface,接口类中定义了一些接口(就是函数,但这些函数都没有具体的实现),子类继承接口类,并且实现接口中的功能...
    99+
    2023-01-31
    接口 抽象类 Python
  • 在Python中使用静态,类或抽象方法
    方法是存储在类属性中的函数,你可以用下面这种方式声明和访问一个函数 >>> class Pizza(object): ... def __init__(self, size): ... ...
    99+
    2023-01-31
    抽象 静态 方法
  • Java超详细介绍抽象类与接口的使用
    目录1.抽象类的语法和特性1.1语法1.2特性2.接口的语法和使用2.1语法2.2特性1.抽象类的语法和特性 1.1语法 1.在Java中,一个类如果被abstract 修饰称为抽象...
    99+
    2024-04-02
  • PHP5接口和抽象类的语法介绍
    这篇文章主要讲解了“PHP5接口和抽象类的语法介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP5接口和抽象类的语法介绍”吧!大家对PHP5接口和PHP5抽象类的语法了解有多少呢?下面...
    99+
    2023-06-17
  • C#中的HttpWebRequest类介绍
    提供 WebRequest 类的 HTTP 特定的实现。 继承层次结构 System.Object → System.MarshalByRefObject → &...
    99+
    2024-04-02
  • C#中静态类和静态类成员的区别是什么
    C#中静态类和静态类成员的区别是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。C#静态类和静态类成员用于创建无需创建类的实例就能够访问的数据和函数。静态类成员可用于分离独立...
    99+
    2023-06-17
  • C++中对象与类的详解及其作用介绍
    目录什么是对象面向过程 vs 面向对象面向过程面向对象什么是类类的格式类的成员函数函数访问权限方法一方法二方法三inline 成员函数什么是对象 任何事物都是一个对象, 也就是传说中...
    99+
    2024-04-02
  • PHP 中的抽象类与接口
    本文介绍了 PHP 中抽象类和接口之间的区别。 在讨论差异之前,首先,我们必须了解抽象类和接口的概念。 以下是抽象类和接口的要点。 PHP 中的抽象类 抽象类由开发者部分实现,至少包含一个...
    99+
    2024-02-27
  • C++类与对象深入之静态成员与友元及内部类详解
    目录一:静态成员1.1:静态成员分类1.2:静态成员变量1.3:静态成员函数1.4:总结特性1.5:试题示例1.6:C++11成员初始化新玩法二:友元2.1:全局函数做友元2.2:类...
    99+
    2024-04-02
  • Java对象与Java类的详细介绍
    本篇内容介绍了“Java对象与Java类的详细介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录面向对象是什么Java类什么是类Java...
    99+
    2023-06-20
  • java中抽象类和接口的相同和不同点介绍
    目录前言一、抽象类是什么?二、接口是什么?三、抽象类和接口的异同点总结前言 本文简单介绍抽象类,接口以及它们的异同点,另附简单的代码举例。 一、抽象类是什么? 在 Java 语言中使...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作