2。3 MFC 编程
MFC(Microsoft Foundation class)是微软为了降低使用 API 函数编写 Windows 应用程序 的难度而开发的一个基本类库[18]。MFC 利用面向对象技术将几乎所有主要的 SDK API 函数 封装在类库的不同类中。
并不能单纯地说 MFC 是一个类库,因为它还提供了一个专门用于 Windows 系统应用程序 的开发框架。此应用程序框架提供了一组的工具为软件开发者,例如,其中的 AppWizard 可 以用来生成初步的程序框架文件,这包括了必要的代码和资源;软件开发者可以使用资源编 辑器通过拖拽控件来直观地设计用户接口,大大缩短了界面开发所需的时间;ClassWizard 用 来自动添加类、成员变量、重载函数以及消息映射函数等等代码。
MFC 使得程序开发者只需要面对 C++中的对象,这样可以更好地集中精力于程序本身而 远离复杂的 Windows 系统调用,从而提高了开发效率。
2。4 套接字
套接字(Socket)是由美国伯克利大学提出并设计地一种支持网络中不同主机之间进行通 信和数据交流的媒介。在实际生活中,人们所使用的网络通信软件的通信功能都是基于 Socket 套接字开发实现的。所以,套接字在网络编程中起着至关重要的作用。
2。4。1 套接字的含义与分类
套接字是一个复杂的软件结构的抽象,包含有记录通信双方 IP 地址和连接状态等信息特 定数据结构等很多选项,但这些内容由操作系统管理,对程序员来说是不可见的。从程序员 的角度来看,套接字本质上就是一种应用程序调用操作系统的网络通信功能的系统调用接口。
为了满足不同应用程序的不同需求,操作系统一般提供三种不同的套接字[18]。 流式套接字(Stream Socket):提供面向连接的可靠的双向数据传输服务,通信双方可以
第 6 页 本科毕业设计说明书
无差错、无重复地发送接收数据,并且保证接收端按发送顺序接受到数据;使用 TCP 协议实 现数据传输,通常在可靠性较高及数据量较大的应用中使用。
数据报套接字(Datagram Socket):提供无连接的、不可靠的数据传输服务,每个数据包 都独立地被发送,不提供无错保证,数据可能丢失,并且接收端不一定按发送顺序接收到数 据包;但使用数据报套接字编程较为简单且效率较高,在出错率较低网络环境下使用的应用 或对数据可靠性要求不是很高的应用通常都采用该类套接字。使用 UDP 协议实现数据通信。 原始套接字(Raw Socket):能够提供流式套接字和数据报套接字无法提供的功能,它允 许应用程序直接对 IP、ICMP 等较底层协议直接访问。原始套接字通常在传输层之下使用, 可以对下层协议的数据包进行控制和操作。常用的 Ping 和 Tracerout 等这类软件都是基于原文献综述
始套接字开发实现的。
2。4。2 套接字接口的位置及实现方法
应用程序、套接字、端口号以及 TCP/IP 协议的关系如图 2。1 所示。从图中可以看出,一 个应用程序可以使用多个套接字,这些套接字既可以是 TCP 套接字也可以是 UDP 套接字; 每一个套接字都要关联到一个端口号,而且允许多个套接字关联到同样一个端口号。
操作系统中实现套接字编程接口的方式有两种。一种是通过在操作系统的内核中增加相应 的软件模块来实现的,在这种方式中,套接字函数就是操作系统本身的功能调用,是操作系 统内核的一部分。另一种是开发操作系统之外的函数库来实现,Windows Socket 就是以库函 数方式实现的,它本身是 Windows 系统自带的一个动态链接库[19]。 基于P2P协议的网络隐蔽信道设计与实现(5):http://www.youerw.com/jisuanji/lunwen_88702.html