- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
用VC实现基于TCP
用 VC 实现基于 TCP/IP 的局域网内
点对点的大文件传输
(1.西北民族大学 中国民族信息技术研究院,甘肃 兰州 730030;2.西北民族大学 计算机科学与信息工程学院,甘肃 兰州 730030)
[摘 要]
文章对网络编程中涉及到的 TCP/IP 协议,讨论了 Winsock 通信机制核心技术,利用 VC++的 MFC 编写基于客户/服务器模式的通信程序.实验结果表明:实现高达 99M 的文件无差错快速传输,耗时为 11s.
[关键词]
TCP/IP;套接字;Winsock;文件传输
TCP/IP 是 Transmission Control Protocol/Internet Protocol 的简写,中文译名为传输控制协议/互联网协议,是当今世界上最广而不基于任何特定硬件平台的网络通信协议.采用 TCP/IP 可以解决异种机联网和异种网互连的问题,并可以访问当今世界上最有影响力的 Internet 网 TCP/IP 协议的基本思想,是通过网间连接层将各种不同的网络连接起来,在各个网络的底层协议之上构造一个虚拟的大网,使用户与其他网的通讯就像与本网的主机通讯一样方便实现,这一思想的相关协议有 TELNET、FTP、SMTP、TCP、UDP、IP、ICMP、ARP、RARP 等[1].
1 TCP/IP 的网络体系结构
TCP/IP 协议集采用层次体系结构,如图 1 所示,每层具有自己特定的功能,底层为高层提供服务,整个系统遵循对等实体通信原则,图 2 是使用 TCP/IP 协议的局域网的协议分成模型,可以看出,每一层在逻辑上都与通信端的对应层相连接.图中所示的服务器程序持续监听通信客户端;客户程序仅周期性地与服务器相连接以交换数据,其中 TCP 协议层提供相当于 OSI 参考模型中传输层的服务,为收、发端应用程序提供通信;IP 协议层负责提供统一地数据报;链路层主要功能是收、发 IP 层地 IP 数据报;TCP/IP 之上是该协议集提供的各种应用服务,而底层网络可以是不同的物理网络,如 Ethernet、Token Ring、X.25 公共分组交换网等.
2 Sockets(套接字)简介
Sockets(套接字)最早是由 Berkeley 大学提出在 UNIX 操作系统下实现 TCP/IP 通信协议的开发接口,随着 Internet 在全球范围内的广泛使用,Sockets 已成为网络编程的通用接.Microsoft 公司以Sockets 为基础开发的 Winsock 建立了 Windows 环境下网络间的编程接口[2].
Sockets 的实质是通信端点的一种抽象,它提供一种发送和接受数据的机制.根据通信性质不同可分为:Stream Sockets(流式套接字)和 Datagram Sockets(数据报套接字),如图 3 所示为这两种套接 字的基本通信方式.其中 Stream Sockets 提供无差错的、面向连接的、无长度限制的双向字节流传输,适应于处理大量数据,尤其适合于 FTP 服务.Datagram Sockets 支持双向的数据传输、但传输过程中不能保证可靠性和无差错性.
我们的程序设计中选择 Stream Sockets 来完成 C/S 模式的通信,保证能够数据准确、无误的传输.
3 Winsock 通信机制
对于开发 Winsock 应用程序而言,了解套接字的通信机制是很必要的[3].
应用程序的网络通信归根结底是利用相同的通信协议来完成信息的传输,应用程序和Winsock都工作在 Windows 的用户模式下,操作系统仅仅通过 Winsock 是不能完成网络间的通信,还需要底层的支持,而套接字仿真器(套接字核心模式驱动程序)和传输驱动程序接口(Transport Driver Interface,TDI)是负责操作系统核心态环境下的网络通信,起到了 Winsock 和传输协议之间的通信桥梁作用.如图 4 所示,Winsock 是网络通信应用程序于套接字仿真器间的接口,TDI 是套接字仿真器和传输协议间的接口套接字核心模式,驱动程序复杂连接和缓冲区管理,以便向应用程序提供套接字仿真(在 AFDSYS 文件中实现),同时负责与底层传输驱动程序对话传输驱动程序接口(TDI)负责核心模式驱动程序与传输协议间的通信.
当应用程序利用 Winsock 发送和接受数据时,并不是由 Winsock 从网络上发送和接收数据的,而是由核心模式驱动程序AFDSYS负责管理发送和接收缓冲区来发送和接收数据.也就是说,当应用程序调用 send 或 WSASend 函数来发送数据时,AFDSYS 将把数据复制进他自己的发送缓冲区,然后 send 后WSASe
文档评论(0)