预览加载中,请您耐心等待几秒...
1/3
2/3
3/3

在线预览结束,喜欢就下载吧,查找使用更方便

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

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

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

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

计算机时代2004年第7期·29· 基于TCP/IP协议的WinSock网络编程及应用 程咏喜,蒋珉 (东南大学自动化研究所,江苏南京210096) 摘要:本文介绍了以TCP/IP为基础,基于客户机/服务器(C/S)模型,在Win2000平台、Vc++6.0环境下利用Windows 套接字(Socket)进行网络编程的相关技术,并应用于车间自动化生产,实现了上、下位计算机之间有效的数据传输: 关键词:TCP/IP;套接字;客户机/服务器;网络编程;数据传输 1WindowsSocketsCSocket类提供了对于同步操作CArchive对象十分重要的阻 长久以来Windows套接字(Sockets)-直是以TCP~P为基塞功能,且CSocket通过与类CArchive和CSocketFile一起来 础的网络编程的一种重要实现方式。套接字是通讯的基石,是管理数据的接收和发送,使我们在设计时不需考虑网络的位顺 支持TCP~P协议网络通信的基本操作单元,可以将套接字看序和字符问的转换问题,从而收发数据变得简单明了。 作是网络上不同主机的进程进行双向通信的端点。目前套接字对于套接字来说,其归档对象是与CSocketFile对象相关 已成为最流行的网络通信应用程序接口之一,已经形成了一套的而非标准的CFile,与连接到一个磁盘文件不同,CSocketFile 完整的标准,即WindowsSockets规范,简称WinSock。对象连接到CSocket对象。一个CArchive对象将负责管理一个 WinSock规范定义了一套可使网络程序开发人员在win—缓冲区。当发送归档对象的缓冲区被填满时,相关的CSocket- dows下开发标准的TCP~P网络程序接口,它不仅包含人们所File对象将缓冲区里的内容取出,清空与套接字相关的归档缓 熟悉的Be~deySocket风格的库函数,还包含了一组针对冲区与发送信息等价。当接收归档对象的缓冲区被填满时, Windows的扩展库函数,以使程序员能充分地利用WindowsCSocketFile对象停止读出直到缓冲区可用。 消息驱动机制、异步网络事件选择方式进行编程。WinSock规CSocket对象实际上是个两态对象,即有时同步有时又异 范定义并记录了任何使用API与Intemet通讯协议(IPS,通常步,但通常情况下是异步状态。在异步状态,套接字能够接收来 指TCP/IP)连接。应用程序使用WindowsSockets的API,而自框架的异步通信,但在操作过程中,如数据接收或发送时,套 WindowsSockets又利用下层的网络通信协议与操作系统以产接字就切换到同步状态。这就意味着套接字将不能接收其它异 生实际的通信,它们之问的关系如图l所示。步通信,直到同步操作完成。 下面简要介绍利用CSocket,并结合CSocketFile和 CArchive对象进行C/S模式下计算机之间通信的一般网络编 网络程序接口(WindowsSockets)程模型,注意它只适用于Stream套接字,这主要是因为Data- iigram套接字不能使用CArchive。 网络通信程序接口(TCP~P)1、分别构造服务器和客户端套接字对象; ::2、调用套接字对象的Create函数创建套接字,而Create 操作系统函数会调用Bind函数将此套接字绑定到指定的地址,并为服 务器套接字指定端口号; 图1应用程序与WindowsSockets关系图 3、服务器调用Listen函数开始侦听客户的连接请求,而客 提到在TCP/IP协议下利用WinSock进行网络编程,自然户调用Connect函数向服务器发出连接请求; 就会涉及到C/S(客户机/服务器)模型。一般说来,在TCP/IP 4、当服务器侦听到客户端连接请求时,就创建一新套接 网络中两个进程之间的相互作用的模式是C/S模式,在这种操 字,并将其传送给Accept函数以接收客户请求; 作模式下,服务器要先启动,客户应用程序向服务器程序请求5、为服务器和客户端套接字分别创建一个与之相关联的 服务,然后服务器响应客户请求并提供相应服务,这种方式隐 CSocketFile对象: 含了在建立C/S问通信时的非对称性。6、为服务器和客户端套接字分别创建一个(或两个)与 2CSocket网络编程CSocketFile对象相关联的CArchive对象以进行数据的接收和 MFC提供了两个WindowsSocke~封装类,即CAsync-发送工作; Socket和CSocket。它们使编程工作变得相对简单,尤其是7、使用CArchive对象在服务器和客户端套接字之间传送 CSocket,它派生自CAsyncSocket,继承了CAsyncSocket的许数据; 多封装了AP1