基于TCPIP协议的WinSock网络编程及应用.pdf
《基于TCPIP协议的WinSock网络编程及应用.pdf》由会员分享,可在线阅读,更多相关《基于TCPIP协议的WinSock网络编程及应用.pdf(3页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、计算机时代 2 0 0 4 年 第 7 期 2 9 基于T C P I P协议的Wi n S o c k 网络编程及应用 程咏喜,蒋珉(东南大学 自动化研究所,江苏 南京 2 1 0 0 9 6)摘要:本文介绍了以T C P I P为基础,基于客户机 服务器(C S)模型,在 Wi n 2 0 0 0平台、V c+6 0环境下利用Wi n d o ws 套接字(S o c k e t)进行网络编程的相关技术,并应用于车间自动化生产,实现 了上、下位计算机之间有效的数据传输:关键词:T CP I P;套接字;客户机 服务器;网络编程;数据传输 1 W i n d o ws So c k e t
2、s 长久以来 Wi n d o w s 套接字(S o c k e t s)-直是以 T C P P为基 础的网络编程的一种重要实现方式。套接字是通讯的基石,是 支持 T C P P 协议网络通信的基本操作单元,可以将套接字看 作是网络上不同主机的进程进行双向通信的端点。目前套接字 已成为最流行的网络通信应用程序接口之一,已经形成了一套 完整的标准,即 Wi n d o w s S o c k e t s 规范,简称 Wi n S o c k。Wi n S o c k 规范定义了一套可使网络程序开发人员在 wi n d o w s 下开发标准的 T C P P网络程序接口,它不仅包含人们所 熟
3、悉的 B e d e y S o c k e t风格的库函数,还包含了一组 针对 Wi n d o w s的扩展库函数,以使程序员能充分地利用 Wi n d o w s 消息驱动机制、异步网络事件选择方式进行编程。Wi n S o c k 规 范定义并记录了任何使用 A P I 与 I n t e me t 通讯协议(I P S,通常 指 T C P I P)连接。应用程序使用 Wi n d o w s S o c k e t s 的 AP I,而 Wi n d o w s S o c k e t s 又利用下层的网络通信协议与操作系统以产 生实际的通信,它们之问的关系如图 l 所示。网络程序
4、接口(Wi n d o w s S o c k e t s)i i 网络通信程序接口(T C P P):操作系统 图 1 应用程序与Wi n d o w s S o c k e t s 关系图 提到在 T C P I P 协议下利用 Wi n S o c k 进行网络编程,自然 就会涉及到 C S(客户机 服务器)模型。一般说来,在 T C P I P 网络中两个进程之间的相互作用的模式是 C S 模式,在这种操 作模式下,服务器要先启动,客户应用程序向服务器程序请求 服务,然后服务器响应客户请求并提供相应服务,这种方式隐 含了在建立 C S问通信时的非对称性。2 CS o c k e t 网
5、络编程 MF C提供了两个 Wi n d o ws S o c k e 封装类,即 CA s y n c-S o c k e t和 C S o c k e t。它们使编程工作变得相对简单,尤其是 CS o c k e t,它派生自 C As y n c S o c k e t,继承了 C As y n c S o c k e t的许 多封装了 A P 1的成员函数,提供了通过 C A r c h i v e 对象使用套 接字更高级抽象,并且管理了通信的大多数方面。更重要的是 C S o c k e t 类提供了对于同步操作 C A r c h i v e对象十分重要的阻 塞功能,且 CS o
6、c k e t通过与类 CA r c h i v e和 C S o c k e t F i l e一起来 管理数据的接收和发送,使我们在设计时不需考虑网络的位顺 序和字符问的转换问题,从而收发数据变得简单明了。对于套接字来说,其归档对象是与 C S o c k e t F i l e对象相关 的而非标准的 C F i l e,与连接到一个磁盘文件不同,C S o c k e t F i l e 对象连接到 C S o c k e t 对象。一个 C A r c h i v e 对象将负责管理一个 缓冲区。当发送归档对象的缓冲区被填满时,相关的 C S o c k e t-F i l e 对象将
7、缓冲区里的内容取出,清空与套接字相关的归档缓 冲区与发送信息等价。当接收归档对象的缓 冲区被填满时,C S o c k e t F i l e 对象停止读出直到缓冲区可用。C S o c k e t 对象实际上是个两态对象,即有时同步有时又异 步,但通常情况下是异步状态。在异步状态,套接字能够接收来 自框架的异步通信,但在操作过程中,如数据接收或发送时,套 接字就切换到同步状态。这就意味着套接字将不能接收其它异 步通信,直到同步操作完成。下 面 简 要 介 绍 利 用 C S o c k e t,并 结 合 C S o c k e t F i l e和 C A r c h i v e 对象进行
8、 C S模式下计算机之间通信的一般网络编 程模型,注意它只适用于 S t r e a m套接字,这主要是因为 D a t a-g r a m套接字不能使用 C A r c h i v e。1、分别构造服务器和客户端套接字对象;2、调用套接字对象的 C r e a t e函数创建套接字,而 C r e a t e 函数会调用 B i n d函数将此套接字绑定到指定的地址,并为服 务器套接字指定端口号;3、服务器调用 L i s t e n函数开始侦听客户的连接请求,而客 户调用 C o n n e c t函数向服务器发出连接请求;4、当服务器侦听到客户端连接请求时,就创建一新套接 字,并将其传送
9、给 A c c e p t 函数以接收客户请求;5、为服务器和客户端套接字分别创建一个与之相关联的 CS o c k e t F i l e 对象:6、为服务器和客户端套接字分别创建一个(或两个)与 C S o c k e t F i l e 对象相关联的 C A r c h i v e对象以进行数据的接收和 发送工作;7、使用 C A r c h i v e对象在服务器和客户端套接字之 间传送 数据;8、在任务执行完毕后,将 C A r c h i v e、C S o c k e t F i l e 和 C S o c k e t 一并销毁。维普资讯 http:/ 3 0 Co mp ut
10、e r Er a No 7 2 0 0 4 C S o c k e t 与 C S o c k e t F i l e,C A r c h i v e 相结合的完整编程步骤 如图2所示。图 2 C S o c k e t 模型编程步骤 对于 C S o c k e t,处理网络事件通知函数 O n A c c e p t()、O n R e-c e i v e 0 和 O n C l o s e 0 依然可用,这可以通过重载基类对应的函数 即可,但永远不要试图调用 O n C o n n e c t 0 和 On S e n d 0。这时需要 调用 C o n n e c t()来与服务器进行
11、连接,但这种调用会发生阻塞,它要一直等到成功地与服务器建立了连接或者有错误发生才 返回。这是由于 CS o c k e t 类的缺省方式是阻塞方式的缘故造成 的。如果这时采用多线程技术,为调用 C o n n e c t()建立一个工作 线程,则在调用该函数发生阻塞时,主线程就不会受其影响 同 样,可以为数据接收和发送创建工作线程,该工作线程可以在 后台运行,套接字在工作线程中的阻塞不会影响到主线程 中的 其它活动,可以继续处理其它诸如 Wi n d o w s 窗口和消息事件 但在实际运用多线程进行网络编程时,必须考虑套接字对象的 同步问题,对套接字调用时,如果不进行同步将可能导致不可 预测
12、的结果。3 实 际应 用 某制造企业光电管生产车间,由置于现场的计算机(下位 机)通过数据采集卡采集产品生产过程中各检测点及控制点,并将获得的及进行初步处理的数据上传给管理计算机(上位 机),上位机在收到传来数据后及时分析并作出相应处理,然后 发送指令给下位机,由下位机处理控制现场产品生产 结果表 明,采用这种方式能有效的控制现场产品生产的质量,提高产 品单位时间生产效率,有效控制单位产品成本。本系统的实现采用本文介绍的通过使用 C S o c k e t 并结合 C S o c k e t F i l e,C A r c h i v e 等 MF C类实现了上、下位计算机之间的 数据通信,以
13、下是网络通信关键步骤代码。3 1服务器端 3 1 1套接字创建、侦听连接、新建一套接字接受连接 v o i d C C h a r i 0 t D lg:On C r e a t e()U p d a t e D a t a 0;mS o c k e t=n e w C L is t e n i n g S 0 c k e t(t h is):if(m p S o c k e t 一 C r e a t e(4 O O O)指定端口创建 if(m p S o c k e t 一 L is t e n()侦听连接 r e t ur n;)r et u r n;)v o id C C h a r
14、i o t D I g:On P e n d in g A c c e p t()p S o c k e t=n e w C S e r v e r S o c k e t(t h i s);if(m p S o c k e t 一 A c c e p t(p S o c k e t)接受连接请求 p S o c k e t 一 O n l n i t i a t e 0;mn C o n n L i s t A d d T a i l(p S 0 c k e t):)else d el e t e pSo ck et;)3 1 2 接 歧数据和 笈送数据 v o id C S e r v e
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 TCPIP 协议 WinSock 网络 编程 应用
限制150内