C#网络编程复习文献

来源:互联网 发布:js折线图插件 编辑:程序博客网 时间:2024/06/01 09:06


第一章 概述

1. 分散式指用户只负责管理自己的计算机系统,各自独立的系统之间没有资源或信息的交换或共享。

集中式指用一台主计算机保存一个企业组织的全部数据,而用户则通过终端连接到这台主计算机系统并与之通信,从而达到访问数据的目的。终端是包含键盘和显示器的端设备,通过通信链路发送和接收数据。

分布式是分散式系统和集中式系统的混合,它由一个又一个连接起来的独立计算机组成。

企业管理系统就是集中式和分布式综合的一种表芯,所有数据用专用的数据库(SQL Server、Oracle或者DB2)集中存储,属于集中式,而对数据的处理则由各个部门的软件分别控制,属于分布式。

2. TCP/IP网络协议【考点:TCP/IP分层及其作用】

TCP/IP分四层概念模型:

a、 应用层(该层负责应用程序之间的沟通,主要协议有简单邮件传输协议(SMTP)、文件传输协议(FTP)以及网络远程访问协议(Telnet)等)【负责实现一切与应用程序相关的功能】;

b、 传输层(该层提供节点间的数据传送以及应用程序之间的通信服务,主要功能是数据格式化、数据确认和丢失重传等。主要协议有传输控制协议(TCP)、用户数据报协议(UDP)等)【负责提供可靠的传输服务】;

c、 网际层(该层负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机,但他不检查数据包是否被正确接受。网络协议(IP)即属于该层协议)【负责网络间的寻址】;

d、 网络接口层(该层负责接收IP数据报并进行传输,从网络上接受物理帧,抽取IP数据报转交给下一层,对实际的网络媒体进行管理,定义如何使用实际网络来传送数据)【负责实际数据的传输】。

第二章 进程与线程

1.进程与线程

【进程:进程是一段静态指令序列(程序)的动态执行过程。】

【线程:一个进程可以划分为若干个独立的执行流,这些独立的执行流称为线程。】

线程分为主线程、辅助线程

【进程与线程的区别:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.

线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.

一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行。】

2.进程管理(Process类):a、确定进程是否响应,是否已经退出;b、获取系统正在进行的进程列表;c、获取个进程的资源占用情况;d、查询本地或远程进程的相关信息等。

3.Process的命名空间:System.Diagnostics;

4.Process类常用的属性和方法:

BasePriority属性

PriorityClass属性:设置或更改进程的优先级,枚举值有6个:Idle、Normal、High、AboveNormal、BelowNormal、RealTime。

ExitCode属性:获取关联进程终止时指定的值。

ExitTime属性:获取关联进程推出的时间,该值只有在HasExited属性为True时才能检测。

ID属性:获取关联进程的唯一标识符。

MainModule属性:获取关联进程的主模版,即加载到特定进程中的.dll或.exe文件,一般用该属性查看启动进程的可执行文件的信息,包括莫板块、文件名和模块占用的内存等详细信息。

ProcessName属性:获取该进程的名称,该名称不包括文件扩展名和路径。

StartInfo属性:获取或设置要传递给启动进程的文件名以及启动参数,类似于命令行方式输入的命令和参数。

StartTime属性:获取关联进程启动的时间。

Threads属性:获取在关联进程中运行的一组线程。

TotalProcessorTime属性

WorkingSet64属性:获取进程分配的物理内存量。

PeakWorkingSet64属性:获取进程使用的最大物理内存量。

StandardInput属性:用于写入应用程序的流。

StandardOutput属性:获取用于读取应用程序输出的流。

Close方法:释放与次组件关联的所有资源。

CloseMainWindow方法:通过像主窗口发送关闭消息来关闭具有用户界面的进程。

GetProcessById方法:通过进程ID创建新的Process组件,并将其与本地计算机上的进程资源关联。

GetProcesses方法:创建新的Proccess组件的数组,并将它们与本地家算计上的所有进程资源关联。

GetProcessesByName方法:创建新的Process组件的数组,并将它们与本地计算机上运行统一可执行文件的所有进程资源关联。

Kill方法:立即强制终止关联的进程。

Refresh方法:重新获取关联进程信息。

Start:启动进程资源并将其与Process组件关联。

WaitForExit方法:设置等待关联进程退出的事件,并在该段时间结束前或该进程退出前,阻止当前线程执行。

WaitForInputIdle方法:使Process组件等待关联进程进入空闲状态,仅适用于具有用户界面的进程。

 

5.线程管理(Thread类):命名空间:System.Threading

创建一个线程的一般步骤有三步:

第一步:编写一个入口函数

public void EntryMethod()

{

}

第二步:创建入口委托

ThreadStart entryPoint = new ThreadStart(EntryPointMethod);

第三步:创建线程

Thread WorkThread = new Thread(entryPoint);

6、前台线程:默认情况下,通过创建并启动新的Thread对象而生成的线程都是前台线程。

后台线程:默认情况下,属于托管线程池的线程(即IsThreadPoolThread属性为true的线程)都是后台线程。【考点】前台线程和后台线程的区别是后台线程不会影响进程终止。属于某个进程的所有前台线程都终止后公共语言运行库就会结束该进程而且所有属于该进程的后台线程都会立即停止,而不管后台工作是否完成。

Class c1=new Class();

Thread myThread=new Thread(c1.Method1);

myThread.IsBackground=true;

7、如何在一个线程访问另一个线程?【考点】

两种办法:一、使用委托(Delegate)和事件(Event)来完成这个工作;二、利用BackgroundWorker组件实现这个功能。

8、如何实现两个线程同步?【考点】

使用同步类:Interlocked(互锁)、Monitor(管程)和Mutex(互斥体)。

9、集合(Collections):

除了Array类定义在System命名空间中外其他集合类都定义在System.Collections命名空间中。

10、Socket.Accept()处理任何传入的请求;Socket.Listen()方法监听客户端连接请求。

11/Lock语句 【一定要将Object类型的对象声明为private,不能将其声明为public,否则将会使lock语句无法控制,从而引发一系列问题.】

12/线程池:是后台执行多个任务的线程集合.(线程池适用于需要多个线程而实际执行时间又不多的场合,如经常处于等待状态的线程。当服务器应用程序接受大量短小线程的请求时,使用线程池技术是非常合适的,它可以大大减少创建和销毁线程的次数,从而提高服务器的工作效率。)

13.

第三章 IP地址转换与网卡信息检测

1.域名解析 概念:网络通信必须指定双方机器的IP地址。IP地址虽然能够唯一地标示网络上的计算机,但它是数字型的,很难记忆,因而又用字符型的数字型来表示它,这个字符型地址称为域名地址,简称域名(Domain Name)。将域名转换为对应IP地址的过程称为域名解析。

域名解析的使用:Dns类常用的方法:

(1)GetHostAddresses方法;获取主机IP地址(publicstatic IPAddress[] GetHostAddresses(string hostNameOrAddress)   IPAddress[] ips=Dns.GetHostAddresses(“www.cctv.com”);)

(2)GetHostEntry方法 public static IPHostEntery (stringhostNameOrAddress)

IPHostEntry host=Dns.GetHostEntry(“”);

(3)GetHostName方法 获取本机主机名

String hostname = Dns.GetHostName();

1.网络数据编码与解码 字符信息不能直接从网络的一端传递到另一端,字符首先需要被转换成一个字节序列后才能在网络中传输。将字符转换为字节序列的过程称为编码。当这些字节传送到网络的接收方时,接收方需反过来再转换为字符序列,这种过程称为解码。【考点】

(对于Unicode字符来说,编码是指将一组Unicode字符转换为一个字节序列的过程,解码是讲一个编码字节序列转换为一组Unicode字符。)

2.Encoding类 位于System.Text命名空间中,主要用于不同编码和Unicode之间进行转换。

具体用法:a、获取所有编码名称及其描述信息;b、获取某个指定的编码描述信息;c、不同编码之间的转换。

Encoder类 位于System.Text命名空间下,可以将字符转换为一个字节序列。[(1)获取Encoder实例;(2)GetBytes方法。(3)GetByteCount方法]

Decoder类 可以将已编码的字节序列解码为字符序列。

第四章 套接字

1.套接字:【套接字是应用网络连接的特殊的文件描述符】它有三个基本要素组成:网络类型、数据类型、数据传输类型、采用的网络协议。【考点】

2.面向连接的套接字服务编程的基本步骤:

(1)创建一个包含采用的网络类型、数据传输类型和协议类型的本地套接字对象,并将与其服务器的IP地址和端口号绑定。这个过程可以通过Socket类。

(2)在指定的端口进行监听,以便接受客户端连接的请求。

(3)一旦接受了客户端的连接请求,就根据客户端发送的连接信息创建与该客户端对应的Socket对象。

(4)根据创建的Socket对象,分别与每个连接的客户进行数据传输。

(5)根据传送信息情况确定是否关闭与对方的连接。

3..NET提供的从Stream继承的数据流类有:(1)文件流:FileStream (2)内存流:MemoryStream (3)加密流:CryptoStream

4.数据流分为:【网络流、内存流、文件流、加密流】【考点】

Stream:位于System.IO命名空间,抽象类,支持对字节的读取。

NetworkStream:网络流,支持对网络数据的同步和异步访问。 在System.Net.Sockets命名空间中。

MemoryStream:位于System.IO命名空间,内存流,以内存作为支持存储区。没有后背存储,可用作临时缓冲区。

FileStream:文件流,位于System.IO命名空间,FileStream类的实例实际上代表一个磁盘文件,使用FileStream类可以对文件系统上的文件进行读取、写入、打开和关闭操作。

CryptoStream:将数据流连接到加密转换。位于System.Security.Cryptography命名空间中。

5. 什么是网络流?网络流的基本操作有哪些?

可以将NetworkStream看作在数据来源端和接收端之间架设了一个数据通道,这样一来,读取和写入数据就可以针对这个通道来进行。NetworkStream流具有读取和写入两个基本操作。对于NetworkStream流,写入操作是指从来源端内存缓冲区到网络上的数据传输;读取操作是从网络上到接收端内存缓冲区(如字节数组)的数据传输。网络流不具有查找操作。

6.StreamWriter与StreamReader类读写流具有什么样的优势?

NetworkStream、MemoryStream和FileStream类都提供了以字节为基本单位的读写方法,但是这种方法需要首先将待写入的数据转化为字节序列后才能进行读写,当操作的是使用字符编码的文本数据时,使用很不方便。因此,在操作文本数据时,一般使用StreamWriter、StreamReader执行这些功能。

第五章 TCP应用编程

1.TCP是Transmission Control Protocol(传输控制协议)的简称,是TCP/IP体系中面向连接运输层协议,在网络中提供全双工的和可靠的服务。【考点】

2.TCP最主要的特点是:

(1)是面向连接的传输层协议;

(2)每个TCP连接只能有两个端点,而且只能一对一通信,不能一点对多点直接通信;

(3)通过TCP连接传送的数据,能保证数据无差错、不丢失、不重复地准确到达接收方, 并且保证各数据到达的顺序与数据发出的顺序相同;

(4)数据以字节流的方式传输;

(5)传输的数据无消息边界。

3.TCP的无消息边界问题三种方法:(1)发送固定长度的消息(1)将消息长度与消息一起发送(3)使用特殊标记分割消息。【考点】

4.使用异步方式调用同步方法

(1)生命与要调用的方法具有相同签名的委托;(2)通过轮询方式检查异步调用是否完成;(3)使用EndInvoke结束异步调用。

第六章 UDP应用编程

1.UDP:(User Datagram Protocol,用户数据包协议)是简单的、面向数据报的无连接协议,提供了快速但不一定可靠的传输服务。【考点】

2.UDP与TCP的区别:【考点:UDP是一个简单的、面向数据报的无连接协议,提供了快速但不一定可靠的传输服务。与TCP一样,UDP也是构建于底层IP协议之上的传输层协议。与TCP相比,UDP有如下一些特点:首先,UDP协议是基于无连接的协议,它能够消除生成连接的系统延迟,所以速度比TCP更快。对于强调传输性能而不是传输完整性的应用(例如音频和多媒体应用)UDP是最好的选择。其次,UDP不但支持一对一连接,而且也支持一对多连接,可以使用广播的方式多地址发送,而TCP仅支持一对一通信;第三,UDP与TCP的报头比是8:20,这使得UDP消耗的网络带宽更少。最后,UDP协议传输的数据有消息边界,而TCP协议没有消息边界。但是使用UDP协议的发送无法了解数据报是否已经到达终端系统,这样一来,UDP就无法保证数据被真正传送到了目标。UDP没有任何对双方会话的支持,也不保证各数据报到达的顺序与数据包发出的顺序相同,可靠性不如TCP协议。】

(1)UDP速度比TCP快;

(2)UDP有消息边界,使用UDP不需要考虑消息边界问题,因此使用上比TCP简单;

(3)UDP可以一对多传输

(4)UDP可靠性不如TCP()

(5)UDP不能保证有序传输(UDP不能保证数据的发送和接收顺序。对于突发性的数据报可能会乱序。)

3.UdpClient的Connect方法和TcpClient的Connect方法语法形式基本一致,作用是否相同?

不同。

UdpClient的Connect方法仅指定远程主机,并不向远程主机发送连接请求。

TcpClient的Connect方法向远程主机发送连接请求。

4.什么事广播、组播?两者区别?【考点】

广播,指同时向多个设备发送消息,并且所有子网中的设备都可以接收到发送方发来的消息。每个广播消息包含一个特殊的IP地址。广播消息地址分为2种:本地广播和全球广播。

使用广播只能向其所在的子网内发送消息,而且是向子网中所有的设备发送消息,没有目的性,不但造成了网络负载,而且资源消耗较高。组播,是将消息从一台设备发送到本网或全网内选择的设备自己上,即发送到那些加入制定组播组的设备上。

5、简要回答利用UdpClient加入组播组和退出组播组的方法步骤。

在UDP协议中,广播和组播的实现都是借助于特殊的IP地址实现的。特别是组播比较特殊。在.NET套接字中,可以使用JoinMutiCastGroup加入组播组,通过向特殊IP发送消息,实现向加入到组播组的主机发送消息。

 第七章 FTP应用编程【不考】

    1.FTP的主要功能:(1)提供文件的共享,包括程序文件和数据文件;

(2)支持间接使用远程计算机;

(3)使用户不因各类主机文件存储器系统的差异而受影响;

(4)使用TCP提供可靠且有效的传输。

2.FTP常用的两种传输方式:ASCII传输方式和二进制传输方式。

 第八章 HTTP应用编程

1.HTTP(HyperText Transfer Protocol,超文件传输协议)是因特网上应用最为广泛的一   种网络传输协议。【考点】

2.HTTP特点:(1)HTTP以TCP方式工作(2)HTTP是无状态的(3)HTTP使用元信息作为标头【考点】

3.分别从Windows应用程序和Web应用程序的角度,说明.NET提供了哪些对HTTP封装的技术?

在Windows应用程序中,.NET提供了以下类对HTTP进行封装:

(1)   WebRequest类和HttpWebRequest类。

WebRequest是.NET Framework的请求/响应模型的抽象(abstract)基类,该类专用于访问Internet数据。HttpWebRequest类是针对于HTTP的特定实现,该类通过HTTP和服务器交互。

(2)   WebResponse类和HttpWebResponse类。

WebResponse类也是一个抽象基类,针对HTTP的响应类是派生自WebResponse类的HttpWebRequest类。HttpWebResponse对象是通过调用WebRequest实例的GetResponse方法来创建的,而不是利用构造函数创建HttpWebResponse类的实例。

ASP.NET应用程序提供了以下类对HTTP进行封装:

(1)   HttpRequest类:它的方法和属性是通过ASP.NET的内部Request对象公开的。

(2)   HttpResponse类:它的方法和属性是通过ASP.NET的内部Response对象公开的。

另外,Windows应用程序和Web应用程序都提供了Uri类,该类定义了属性和方法来处理URI,包括分析、比较和组合。

4.HTTP提供的请求方法:

 a、GET:请求过去特定的资源,例如,请求一个Web页面。b、POST。c、PUT; d、HEAD。

5.利用HTTP的HRAD方法,检测网络资源是否有效。

6.简要说明下载文件时如何实现断点续传。

【解答】

(1)   利用HttpWebResponse的ContentLength属性获取下载文件的总长度。

(2)   利用HttpWebRequest的AddRange方法指定下载的文件数据范围。例如request.AddRange(5001, 10000)表示下载的范围为从5001字节开始到10000字节处结束。

编写代码实现断点续传时,只需要记住已经成功下载的字节数,当需要从断点处继续下载时,根据已经下载的内容,重新指定下载的范围即可。

第九章 SMTP与POP3应用编程 【不考】

1 .电子邮件由( 信封)、首部和(正文)三部分组成。

2.SMTP命令中指定邮件正文的命令是( DATA)。

3. 发送邮件经常使用的协议是( Smtp)。

4. 接收邮件时,客户与POP3服务器之间经历了三个状态,分别是(授权)状态、(操作)状态和(更新)状态。

第十章 P2P应用开发技术

1.P2P(Peer-to-Peer,对等互联网或点对技术),基于P2P方式实现的软件,已广泛应用于资源下载、互动游戏、交互式媒体播放、分布式计算等多种领域。【考点】

2.简述P2P模式同C/S模式相比的优缺点。【考点】

在传统的“服务器/客户端”应用系统中,客户端与服务器有明确的分界,而使用P2P技术实现的每个计算机节点既是客户端,也是服务器。采用这种方式,不会像C/S模式那样带来服务器网络带宽瓶颈,造成网络堵塞的问题。同时,P2P技术更加符合分布式计算的理念。其所倡导的计算能力边缘化、计算资源共享等思想,刚好与网格技术不谋而合。

3.P2P设计模式:(1)单纯型P2P架构,没有专用的服务器;(2)混合型P2P架构,即单纯型和专用服务器相结合的架构。

4.P2P实现原理:a、发现b、连接和通信.【考点】

5.PeerName类

PeerNamep = new PeerName("0.My PeerName");

6.P256—257

 

 

 

 

 

 

 

原创粉丝点击