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 ...
随机推荐
- C++系统时间及字符串转换参考资料
https://msdn.microsoft.com/en-us/library/a442x3ye.aspx https://msdn.microsoft.com/en-us/library/fe06 ...
- python之路----面向对象进阶二
item系列 __getitem__\__setitem__\__delitem__ class Foo: def __init__(self,name,age,sex): self.name = n ...
- bzoj1647 / P1985 [USACO07OPEN]翻转棋
P1985 [USACO07OPEN]翻转棋 其实我们只要枚举第一行的状态,后面的所有状态都是可以唯一确定的. 用二进制枚举灰常方便 #include<iostream> #include ...
- Python3 获取网络图片并且保存到本地
Python3 获取网络图片并且保存到本地 import requests from bs4 import BeautifulSoup from urllib import request impor ...
- 关于linux中的上下文切换
对于linux中的上下文一直以来没有特别的关注其合理范围应该是多少(关于上下文切换的概念,网上已经有很多解释了,再次不再重复),白天偶尔注意到了一下,晚上特地看了下白天负载和和收盘后的负载如下(服务器 ...
- 定制django admin页面的跳转
在django admin的 change_view, add_view和delete_view页面,如果想让页面完成操作后跳转到我们想去的url,该怎么做 默认django admin会跳转到ch ...
- ELK之logstash6.5
首先安装,这里采用rpm安装: # rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch 创建repo文件: [root@no ...
- 20145122《Java程序设计》第七周学习总结
教材学习内容总结 1.在只有Lambda表达式的情况下,参数的类型必须写出来. 2.Lambda表达式本身是中性的,同样的Lambda表达式可用来表示不同目标类型的对象操作. 3.Lambda表达式只 ...
- RS(纠删码)技术浅析及Python实现
前言 在Ceph和RAID存储领域,RS纠删码扮演着重要的角色,纠删码是经典的时间换空间的案例,通过更多的CPU计算,降低低频存储数据的存储空间占用. 纠删码原理 纠删码基于范德蒙德矩阵实现,核心公式 ...
- Python3基础 ** 幂运算 // 整除运算
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...