1、第一章1、 套接字3种:(1)流式套接字(SOCK_STREAM):实现面向连接的TCP通信,无消息边界。 (2)数据报套接字(SOCK_DGRAM):实现无连接的UDP通信 (3)原始套接字(SOCK_RAW):实现IP数据包通信2、 IPV4和IPV6的区别(1)IPV4:由4个字节(十进制表示)组成的二进制值进行识别,中间用圆点分开,这种方法叫做点分十进制表示法。(2)IPV6:每个IP地址有16个字节(128位二进制数),其完整格式用8段16进制表示,各段之间用冒号分隔。(3)可用端口地址的范围是十进制的065535。3、网络进程地址使用二元组(IP地址、端口号)表示。4、System
2、.Net命名空间四大类1)IPAddress类(2)Try / 获取IPAddress实例 IPAddress ip = IPAddress.Parse(143.24.20.36);(3)IPAddress ip = IPAddress.Parse(:1); / V6地址 0:0:0:0:0:0:0:1简写为:1if (ip.AddressFamily = AddressFamily.InterNetworkV6) MessageBox.Show(这是IPv6地址);(4) 判断V6和 V4地址IPAddress ips = Dns.GetHostAddresses(“”);for (int
3、i=0; i ips.Length; i+) /AddressFamily.InterNetwork 表示此IP为IPv4, /AddressFamily.InterNetworkV6 表示此地址为IPv6类型 if (ipsi.AddressFamily = AddressFamily.InterNetwork) textbox1.Text=ipsi.ToString(); 2)IPEndPoint类public IPEndPoint(IPAddress address, int port);IPEndPoint iep = new IPEndPoint(localAddress, 6500
4、0);3)IPHostEntry类 该类一般和Dns类一起使用。常用属性AddressList属性 获取或设置与主机关联的IP地址列表(包括IPv4和IPv6)HostName属性 包含了指定主机的主机名/ 获取搜狐服务器的所有IP地址IPAddress ips =Dns.GetHostEntry(“”).AddressList;4)Dns类方法名称说明GetHostAddresses返回指定主机的Internet协议IP地址,与该方法对应的还有异步方法GetHostEntry将主机名或IP地址解析为IPHostEntry实例,与该方法对应的还有异步方法GetHostName获取本地计算机的主
5、机名1)GetHostAddresses方法利用GetHostAddresses方法可以获取指定主机的IP地址,该方法返回一个IPAddress类型的数组。方法原型为public static IPAddress GetHostAddresses(string hostName /Address);参数中的hostNameOrAddress表示要解析的主机名或IP地址。例如:IPAddress ips = Dns.GetHostAddresses();若hostNameOrAddress是IP地址,则直接返回此地址;若hostNameOrAddress是空字符串,则返回所有IPv4和IPv6地
6、址。例如:IPAddress ips = Dns.GetHostAddresses(); /获取本机的所有IP地址2)GetHostEntry方法可返回一个IPHostEntry实例,用于在DNS服务器中查询与某个主机名或IP地址关联的IP地址列表。public static IPHostEntry GetHostEntry (string hostName / Address)参数中的hostName / Address表示要解析的主机名或IP地址。当参数为空字符串时,返回本地主机的IPHostEntry实例。例如:IPHostEntry host = Dns.GetHostEntry();
7、var ipAddresses = host.AddressList; /获取本机所有IP地址string name = host.HostName; /获取本机主机名3)GetHostName方法string hostname = Dns.GetHostName( ); /获取本机主机名。(1)引用命名空间_private void button1_Click(object sender, EventArgs e) string hostName = this.txtHostName.Text; listBox1.Items.Clear(); /根据主机名或域名获得IPHostEntry实例
8、 IPHostEntry ipInfo =_(hostName); /把IP地址添加到listbox1中 foreach (_ip in _) listBox1.Items.Add(ip.ToString(); /显示主机名 txtDnsName.Text = _;using System.Net; Dns.GetHostEntry IPAddress ipInfo.AddressList ipInfo.HostName5、TCP/IP协议栈P19层次名称功能协议应用层(ApplicationLayer)负责实现与应用程序相关的功能FTP(文件传输协议)HTTP(超文本传输协议)DNS(域名服
9、务器协议)SMTP(简单邮件传输协议)NFS(网络文件系统协议)传输层(TransportLayer)负责提供节点间的数据传送以及应用程序之间的通信服务,主要功能是数据格式化、数据确认和丢失重传等TCP(控制传输协议)UDP(用户数据报协议)网际层(Inter-networkLayer)负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机,但它不检查数据包是否被正确接收IP(网际协议)ICMP(网际控制消息协议)ARP(地址解析协议)RARP(反向地址解析协议)网络接口层(Host-to-NetLayer)负责实际数据的传输HDLC(高级链路控制协议)PPP(点对点协议)SLIP(
10、串行线路接口协议)6、Socket类的构造函数为: public Socket( AddressFamily addressFamily, /网络类型 SocketType socketType, /套接字类型 ProtocolType protocolType); /使用的协议 第二章1、 委托:是一种数据类型,是面向对象的,类型安全的和保险的,是引用类型,是一种特殊的类过程:先定义,后声明,接着实例化,然后作为参数传递给方法,最后才能使用目的:动态调用方法2、 (1)定义委托使用关键字delegate:delegate void SomeDelegate(type1 para1,type2
11、 para2,typen paran);(2)声明委托: SomeDelegate d;(3) 接着实例化: d = new SomeDelegate(obj.InstanceMethod);(4)然后用作某方法的参数: someMethod(d);(4)最后在此方法的实现代码中使用: private void someMethod(SomeDelegate someDelegate) /使用委托 someDelegate(arg1,arg2,argn); (5)(前后参数一致)方法InstanceMethod的定义:private void InstanceMethod(type1 para
12、1,type2 para2,typen paran)/方法体3、 线程的创建(两种方法)Thread类(using System.Threading)接收一个ThreadStart委托或ParameterizedThreadStart委托的构造函数,该委托包装了调用Start方法时由新线程调用的方法,示例代码如下。Thread thread = new Thread(new ThreadStart(method);/创建线程 thread.Start();/启动线程Thread thread = new Thread(new ParameterizedThreadStart(method);/
13、创建线程thread.Start(3);/启动线程并传参数3方法回调,基于委托,一般用于跨线程访问Windows窗体控件对象,方法名以CallBack结尾,Invoke方法触发。第三章4、 基于IAsyncResult的异步设计模式(选填)基于IAsyncResult的异步设计模式通过前缀分别为“Begin”和“End”的两个方法实现开始和结束异步操作,每个Begin方法都必须有一个与其对应的End方法,如BeginAcceptTcpClient和EndAcceptTcpClient方法等。程序在调用Begin后,可以在调用线程上继续执行其下面的指令,同时异步操作在另一个线程上执行。Begin
14、方法开始异步操作,并返回一个实现 IAsyncResult接口的对象。TCP类第四章1、 UdpClient对象Send、receive方法原理(1)Send方法有3种不同的重载形式,如下:public int Send(byte data, int length, IPEndPoint iep)public int Send(byte data, int length, string hostname, int port)public int Send(byte data, int length)(1)目标为网络端点。(2)目标为远程主机。(3)目标已默认。2)Receive方法用于获取从远
15、程主机发来的UDP数据报。语法形式如下:IPEndPoint remoteIPEndPoint = new IPEndPoint(IPAddress.Any, 0);public byte Receive (ref IPEndPoint remoteEP) /ref 引用类型6、UdpClient类 System.Net.Sockets(1) UdpClient实例的构造UdpClient类提供了6种重载的构造函数,用于IPv4和IPv6。对于IPv4来说,常用的重载形式有以下4种:public UdpClient()public UdpClient(int port)public UdpCl
16、ient(IPEndPoint localEp)public UdpClient(string hostname,int port)第五章1、 P2P基本原理3个阶段:发现、连接、通信2、 简述PNRP的基本功能 对等名称解析协议1)名称注册任何资源要被网络上的其他主机识别到,首先必须注册进P2P网络。名称注册就是将包含对等节点信息的对等名发布到云中,以便其他对等节点解析。2)名称解析名称解析,即利用对等名获取注册到云中的资源所在对等节点的IP地址和端口号的过程。3)对等名称的格式:Authority.ClassifierAuthority节:取决于名称的安全类型,不安全的Authority
17、=0;安全的有40个十六进制字符构成。Classifier节是则是用户定义的字符串,用于标识应用程序的字符串,可以是最大长度可为 150 字符。3、混合型P2P:传统C/S+单纯型P2P第七章1、 WebBrowser控件 WebRequest类和HttpWebRequest类WebRequest是.NET Framework的请求响应模型的抽象(abstract)基类,该类专用于访问Internet数据。保存网页:pageWebBrowser.ShowSaveAsDialog();HttpWebRequest是针对于HTTP的特定实现,即它的基类是WebRequest抽象类。该类通过HTTP
18、和服务器交互。代码:HttpWebRequest request = (HttpWebRequest)WebRequest.Create();HttpWebResponse response = (HttpWebResponse)request.GetResponse( );2、WebBrowser控件的NewWindow事件如下:/使得本浏览器可以独立自主地显示网页。而无须依赖外部浏览器private void pageWebBrowser_NewWindow(object sender, CancelEventArgs e)string newUrl = pageWebBrowser.St
19、atusText;toolStripStatusView.Text = 正在打开网页 + newUrl + .;pageWebBrowser.Navigate(newUrl);e.Cancel = true; /使外部无法捕获此事件第八章1、FtpWebRequest类FtpWebRequest类用于实现FTP客户端。若要获得FtpWebRequest的实例,需使用Create方法,该方法有以下两种重载形式。(1) FtpWebRequest.Create(String)FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(ftp
20、:/myFTPServer/myFile);(2) FtpWebRequest.Create(Uri)Uri siteUri = new Uri(ftp:/myFTPServer/myFile);FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(siteUri);2、FtpWebRequest类的常用属性和方法。第九章1、 电子邮件相关协议(3个)(1) SMTP:简单邮件传输协议 25(2) POP:邮局协议 110(3) IMAP:邮件访问协议 1432、 SMTP工作的7个基本命令码。名称说明HELO或者EHLO发送连接
21、到服务器的命令,EHLO主要用于与ESMTP服务器建立连接时发送命令MAILFROM指定发件人的邮件地址RCPTTO指定收件人的邮件地址DATA表示开始向服务器发送邮件数据,包括邮件的首部和正文。,邮件内容以单独一行”.”表示结束RSET清除收件人的数据,包括存入缓存区的数据NOOP该命令不影响任何参数,只要求接收方回答响应,不影响缓冲区的数据QUIT断开连接3、 在SMTP中,电子邮件由信封、首部、正文和结束符号4部分组成。4、 邮件发送相关类身份验证类(NetworkCredential)邮件地址类(MaiIAddress)邮件信息类(MaiIMessage)附件类(Attachment)
22、邮件发送类(SmtpClient)邮件附加信息类(System.Net.Mime)第十一章1、 FTP客户端从FTP服务器的完整交互过程(P341)(1) 启动FTP(2) 建立控制连接(3) 建立数据连接和进行文件传输(4) 关闭FTP2、 主动模式(P343)服务器主动连接客户端,然后传输文件。FTP服务器数据端口固定在203、 被动模式(P343)服务器被动接收客户端连接请求,即控制连接请求和数据连接请求都由客户端发起。FTP服务器数据端口固定在1025-65535间随机。两者的共同点是都使用 21端 口进行用户验证及管理4、 FTP命令PASV命令格式:PASV功能:该命令告诉FTP服
23、务器,让FTP服务器在指定的数据端口进行监听,进入被动接收请求的状态。PORT命令格式:PORT功能:该命令告诉FTP服务器,客户端监听的端口号是address,让FTP服务器采用主动模式连接客户端。TYPE命令格式:TYPE功能:指定要传输的数据类型,有ASCII和BINARY。MODE命令格式:MODE功能:指定传输模式,S表示流,B表示块,C表示压缩。RNFR命令格式:RNFR 功能:重新命名文件,该命令的下一条命令应该用RNTO指定新的文件名。RNTO命令格式:RNTO功能:该命令和RNFR命令共同完成对文件的重命名,紧跟在RNFR命令后。DELE命令格式:DELE功能:删除指定路径下
24、的文件数据流1、 网络流(NetworkStream):命名空间:System.Net.Sockets利用TcpClient对象的GetStream方法得到网络流对象。NetworkStream networkStream = client.GetStream( ); 操作文本数据时,一般用StreamReader和StreamWriter类来实现。StremReader sr = new StremReader (networkStream); StreamWriter sw = new StreamWriter (networkStream); 2、 StreamReader和Stream
25、Writer类:(1) 命名空间:System.IO(2) 利用StreamWriter类,可以用类似Console.Write和Console.WriteLine的办法写入文本数据;利用StreamReader类,用类似Console.Read和Console.ReadLine的办法读取文本数据。3、 BinaryReader和BinaryWriter类(1)命名空间:System.IO(2)对于BinaryReader中的每个读方法,在BinaryWriter中都有一个与之对应的写方法。比如BinaryReader提供了ReadByte、ReadBoolean、ReadInt、ReadIn
26、t16、ReadDouble、ReadString等方法BinaryWriter则提供了多个重载的Write方法分别与之对应。POP3状态:授权状态、操作状态、 更新状态1. 授权状态(1)发送用户名。命令格式:USER该命令将客户的用户名发送到服务器。服务器返回“+OK”表示是正确的用户名,“-ERR”表示是错误的用户名。例如:(2)输入密码。命令格式:PASS2. 操作状态(1)STAT命令。该命令从服务器中获取邮件总数和总字节数,服务器响应命令返回邮件总数和总字节数。(2)LIST命令。该命令从服务中获得邮件列表和大小。服务器响应命令返回列出邮件列表和大小。(3)RETR命令。命令格式:RETR该命令从服务器中获得一个邮件。(4)DELE命令。命令格式:DELE该命令告诉服务器将邮件标记为删除。3. 更新状态QUIT命令。该命令关闭与服务器的连接。