预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共34页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

使用VC++的网络编程总结 1.套接字编程原理 1.1Client/server通信模型 1.2WindowsSockets规范 1.3套接字 1.3.1套接字定义 1.3.2分类 1.3.3套接字的作用 1.3.4端口与地址 1.3.5套接口属性 2.基本的WindowsSocketsAPI编程 2.1常用函数 2.2TCP实例 2.3UDP实例 2.4Socket通信阻塞的解决方法 3.MFC下的Socket编程的类 3.1CAsyncSocket类 3.2CSocket类 3.3WindowsSockets:带存档的套接字的工作方式 3.4流式套接字通信的操作顺序 3.5使用CAsyncSocket类 3.6从套接字类派生 3.7套接字通知 3.8一个使用CSocket类的网络通信实例 3.8.1服务器端应用程序设计(ServerDemo) 3.8.2客户端应用程序设计(项目名称ClientDemo) 4.套接字的托管实现 4.1System::Net::Sockets命名空间 4.2实例:一个新邮件检查器 5.怎样实现服务器端多线程的socket功能? 1.套接字编程原理 一个完整的网间通信进程需要由两个进程组成,并且只能用同一种高层协议。也就是说, 不可能通信的一端用TCP,而另一端用UDP。一个完整的网络信需要一个五元组来标识: 协议、本地地址、本地端口号、远端地址、远端端口号。 1.1Client/server通信模型 在客户/服务器模式中我们将请求服务的一方称为客户(client),将提供某种服务的一方 称为服务器(server)。 一个服务程序通常在一个众所周知的地址监听对服务的请求,也就是说服务进程一直处 于休眠状态,直到一个客户对这个服务的地址提出了连接请求。在这个时刻,服务程序被“惊 醒”并且为客户提供服务—对客户的请求作出适当的反应。虽然基于连接的服务是设计客户 机/服务器应用程序时的标准,但有些服务也是可以通过无连接的接口提供的。 客户机/服务器的请求/响应过程示意图如下所示。 图1客户/服务器通信模型 通过上面的分析,我们不难理解一个一个完整的网络应用程序包括客户端和服务器两个 部分。客户与服务器进程的作用是非对称的,因此编码不同。服务进程一般是等待客户请求 而启动的,只要系统运行,该服务进程一直存在,直到终止或强迫终止。 1.2WindowsSockets规范 WindowsSockets规范是90年代初Microsoft公司联合其他几家大公司共同制定的一套 在Windows下的二进制兼容网络编程接口规范。它以U.C.Berkeley大学BSDUNIX中流行 的Socket接口为基础,主要在其上扩充了一组针对Windows的扩展库函数,增加了符合 Windows消息驱动特性的网络事件异步选择机制,以使程序员能够充分利用Windows消息 驱动机制进行编程。 WindowsSockets的用途是将基础网络抽象出来,这样,您不必对网络非常了解,并且 您的应用程序可在任何支持套接字的网络上运行。它为应用程序开发者定义了一套简单统一 的API,并让各家网络软件供应商共同遵守。 WindowsSockets规范从90年代初的1.0版本开始,经过不断的完善和发展,目前已经 有了WindowsSockets2版本。值得注意的是,Microsoft的MFC库现在只支持Windows Sockets1版本,不支持WindowsSockets2版本。 MFC提供了两个类用以封装WindowsSocketsAPI。一个是CAsyncSocket类,它主要 是提供给那些具有一定网络编程经验,希望同时拥有SocketAPI编程的灵活性和类库编程便 利性的开发者的。另一个是CSocket类,它由CAsyncSocket类派生,它具有更高的抽象化, 致力于简化网络编程所需的操作。 1.3套接字 1.3.1套接字定义 套接字是一个通信终结点,它是Sockets应用程序用来在网络上发送或接收数据包的对 象。套接字具有类型,与正在运行的进程相关联,并且可以有名称。目前,套接字一般只与 使用网际协议组的同一“通信域”中的其他套接字交换数据。使用套接字的应用程序间通信模 型如图2所示。 应用程序A应用程序B 套接字A套接字B 图2套接字通信模型 1.3.2分类 可用的套接字类型有以下两种: 1.3.2.1流式套接字 流式套接字提供没有记录边界的数据流,即字节流。字节流能确保以正确的顺序无重 复地被送达。 服务器客户机 创建并初始化套接字创建并初始化套接字 监听来自客户机的请求 请求建立连接 接受连接请求 接收数据发送数据 发送数据接收数据 关闭连接关闭连接 图3流式套接字(有连接通信)编程 1.3.2.