24.2 网络编程基础——System.Net 命名空间
使用C#进行网络编程时,通常要用到:
System. Net 命名空间、
System. Net. Sockets 命名空间、
System. Net. Mail 命名空间。
24.2.1 System. Net 命名空间及相关类的使用
System. Net 命名空间为当前网络上使用的多种协议提供了简单的编程接口。
它所包含的 WebRequest 类和 WebResponse 类形成了所谓的可插接式协议的基础。
(插接式协议是网络服务的一种实现,它使用户能够开发出使用 Internet 资源的应用程序,而不必考
虑各种不同协议的具体细节)
1. Dns 类 ——静态类
Dns 类从 Internet 域名系统(DNS)检索关于特定主机的信息。
Dns 类中的常用方法及说明如下:
GetHostAddresses ( ) 返回指定主机的 IP 地址
GetHostName ( ) 获取本地计算机的主机名
使用:
IPAddress[] ips = Dns.GetHostAddresses( textBox1.Text ) ; //获取指定主机的 IP 地址
foreach( IPAddress ip in ips ) //循环访问获得的 IP 地址
{
textBox2.Text = ip.ToString(); //将得到的 IP 地址显示在文本框中
}
2. IPAddress 类
IPAddress 类包含计算机在 IP 网络上的地址,主要用来提供网际协议(IP)地址。
常用属性: Address 属性 网际协议地址
常用方法: Parse ( ) 将 IP 地址字符串转换为 IPAddress 实例
3. IPEndPoint 类
IPEndPoint 类主要用来将网络端点表示为 IP 地址和端口号。
常用属性:
Address 属性 获取或设置终结点的 IP 地址
Port 属性 获取或设置终结点的端口号
使用:
IPEndPoint ipePoint = new IPEndPoint( IPAddress.Parse(textBox1.Text) , 80 ) ; //实例化 IPEndPoint 类对象
label2.Text = "IP 地址:" + ipePoint.Address.ToString() + "\n 端口号:"… //使用 IPEndPoint 类对象获取…
4. WebClient 类
WebClient 类提供向 URI标识的任何本地、Intranet 或 Internet 资源发送数据以及从这些资源接收数据的公共方法。
常用属性:
BaseAddress 属性 获取或设置 WebClient 发出请求的基 URI
Encoding 属性 获取或设置用于上传和下载字符串的 Encoding
使用:
WebClient wclient = new WebClient(); //实例化 WebClient 类对象
wclient.BaseAddress = textBox1.Text; //设置 WebClient 的基 URI
wclient.Encoding = Encoding.UTF8; //指定下载字符串的编码方式
wclient.Headers.Add ("Content-Type", "application/x-www…") ; //为 WebClient 类对象添加标头
Stream stream = wclient.OpenRead ( textBox1.Text ) ; //
StreamReader sreader = new StreamReader ( stream ) ;
string str = string.Empty;
while(( str = sreader.ReadLine() ) != null )
{
richTextBox1.Text += str + "\n";
}
5. WebRequest 类和 WebResponse 类
WebRequest 类是 .NET Framework 的请求/相应模型的抽象基类,用于访问 Internet 数据。
(使用该请求/相应模型的应用程序可以用协议不可知的方式从 Internet 请求数据。
在这种方式下,应用程序处理 WebRequest 类的实例,而协议特定的子类则执行请求的具体细节。)
WebResponse 类也是抽象基类,应用程序可以使用 WebResponse 类(以协议不可知的方式)参与请求
和响应事务,而从 WebResponse 类派生的协议类携带请求的详细信息。
另外,需要注意的是,客户端应用程序不直接创建 WebResponse 对象,而是通过对 WebRequest 实例
调用 GetResponse 方法来进行创建。
24.2 网络编程基础——System.Net 命名空间的更多相关文章
- 网络编程基础——System.Net.Socket 命名空间及相关类的使用
System.Net.Socket 命名空间主要提供制作 Socket 网络应用程序的相关类.(Socket 类.TcpClient 类.TcpListener 类 和 UdpClient 类) 1. ...
- C#网络编程基础知识
C#网络编程基础知识一 1.IPAddress类 用于表示一个IP地址.IPAddress默认构造函数 public IPAddress(long address);一般不用 其中Parse()方法最 ...
- Android 网络编程基础之简单聊天程序
前一篇讲了Android的网络编程基础,今天写了一个简单的聊天程序分享一下 首先是服务端代码: package com.jiao.socketdemo; import java.io.Buffered ...
- Java网络编程和NIO详解开篇:Java网络编程基础
Java网络编程和NIO详解开篇:Java网络编程基础 计算机网络编程基础 转自:https://mp.weixin.qq.com/s/XXMz5uAFSsPdg38bth2jAA 我们是幸运的,因为 ...
- python全栈开发从入门到放弃之socket网络编程基础
网络编程基础 一 客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构 互联网中处处是C/S架构 如黄色网站是服务端,你的浏览器是客户端(B/S架构也是C/S架构的一种) 腾讯作为服务 ...
- 网络编程基础之C/S架构和TCP/IP协议
一.何谓C/S架构 C指的是client(客户端软件),S指的是Server(服务端软件),既然我们的的标题是网络编程基础, 那我们就一起来学习怎样写一个C/S架构的软件,实现服务端与客户端软件基于网 ...
- 大数据学习笔记——Java篇之网络编程基础
Java网络编程学习笔记 1. 网络编程基础知识 1.1 网络分层图 网络分层分为两种模型:OSI模型以及TCP/IP网络模型,前者模型分为7层,是一个理论的,参考的模型:后者为实际应用的模型,具体对 ...
- Linux网络编程基础API
第5章 Linux网络编程基础API 探讨Linux网络编程基础API与内核中TCP/IP协议族之间的关系,并未后续章节提供编程基础.从3个方面讨论Linux网络API. socket地址API.so ...
- linux 网络编程 基础
网络编程基础 套接字编程需要指定套接字地址作为参数,不同的协议族有不同的地址结构,比如以太网其结构为sockaddr_in. 通用套接字: struct sockaddr { sa_family_t ...
随机推荐
- WebService(JAX-WS、XFire、Axis三种)获取客户端ip
WebService(JAX-WS.XFire.Axis三种)获取客户端ip JAX-WS.XFire.Axis三种webservice的获取客户端IP的简单实现过程: 1,基于JDK6 jax-ws ...
- this逃逸
首先,什么是this逃逸? this逃逸是指类构造函数在返回实例之前,线程便持有该对象的引用. 常发生于在构造函数中启动线程或注册监听器. eg: public class ThisEscape { ...
- 20145337 《网络对抗技术》Web基础
20145337 <网络对抗技术>Web基础 一.实验后回答问题 什么是表单? 表单是HTML的一个重要部分,主要用于将用户输入的信息提交到服务器.如果是普通的HTML页面,则当浏览器提出 ...
- TensorFlow入门(四) name / variable_scope 的使
name/variable_scope 的作用 欢迎转载,但请务必注明原文出处及作者信息. @author: huangyongye @creat_date: 2017-03-08 refer to: ...
- TensorFlow入门(三)多层 CNNs 实现 mnist分类
欢迎转载,但请务必注明原文出处及作者信息. 深入MNIST refer: http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/mni ...
- CEF之CefSettings设置日志等级
CefSettings结构体允许定义全局的CEF配置,经常用到的配置项如下: single_process 设置为true时,Browser和Renderer使用一个进程.此项也可以通过命令行参数“s ...
- tensorflow拟合随机生成的三维数据【学习笔记】
平台信息:PC:ubuntu18.04.i5.anaconda2.cuda9.0.cudnn7.0.5.tensorflow1.10.GTX1060 作者:庄泽彬(欢迎转载,请注明作者) 说明:感谢t ...
- Inversion of Control Containers and the Dependency Injection pattern
https://martinfowler.com/articles/injection.html One of the entertaining things about the enterprise ...
- 1、webpack编译打包Sass编译的css进js文件
cnpm install css-loader --save-dev //css-loader 是将css打包进js cnpm install style-loader --save-dev ...
- Java中一种无意识的递归
来自: Java编程思想P287 public class Main { /** * @param args */ @Override public String toString() { retur ...