计算机网络课程设计(文件传输).doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《计算机网络课程设计(文件传输).doc》由会员分享,可在线阅读,更多相关《计算机网络课程设计(文件传输).doc(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、能可靠工作的文件传输工具 1 理论知识(一级标题,黑体四号,加粗,单倍行距,段前后6磅)1.1 传输文件工具工作原理分析(二级标题,宋体四号,加粗,单倍行距,段前后6磅)程序使用的是基于TCP/IP的协议,用套接字来实现文件的传输。1.1.1 TCP/IP的网络体系结构TCP/IP协议采用层次体系结构,如图2所示,从图中可以看出,每一层在逻辑上都与通信端的对应层相连接。图中所示的服务器程序持续监听通信客户端;客户端仅周期性地与服务器相连接以交换数据,其中TCP协议层提供相当于OSI参考模型中传输层的服务,为收、发端应用程序提供通信;IP协议层负责提供统一的数据报;链路层主要功能是收、发IP层的
2、IP数据报;TCP/IP之上是该协议提供的各种服务,而底层网络可以是不同的物理网络,如Ethernet、Token Ring、X.25公共分组交换网等。 图1 TCP/IP协议层模型(LAN)1.1.2 套接字(Sockets)套接字(Sockets)最早是由Berkeley大学提出在UNIX操作系统下实现TCP/IP通信协议的开发接口,随着Internet在全球范围内的广泛使用,Sockets已成为网络编程的通用接口。Microsoft公司以Sockets为基础开发的Winsock建立了Windows环境下网络间的编程接口。套接字是对网络中不同主机上应用进程之间进行双向通信的端点的抽象,一个
3、套接口就是网络上进程通信的一端,提供了应用层进程利用网络协议栈交换数据的机制。套接字可以分为流式套接字(Stream Sockets)、数据报套接字(Datagram Sockets)和原始套接字(Raw Sockets)。流式套接字最常用的套接字,提供面向连接的、无差错的、发送顺序一致的、包长度不限和非重复的网络信息的传输;数据报套接字提供无连接的服务,以独立的数据报进行传输,不保证顺序性、可靠性和无重复性;原始套接字提供对下层网络的通信协议的访问,主要用于开发新的协议或用于提取较隐蔽的功能。在程序设计中我们选择流式套接字搂完成C/S模式的通信,保证数据能够准确、无误的传输。图2所示的是流式
4、套接字的基本通信方式。 图2 面向连接的流方式1.2.3 传输原理应用程序的网络通信是利用相同的通途协议来完成信息的传输。应用程序和Winsock都是工作在Windows的用户模式下,操作系统不仅仅通过Winsock,还需要底层的支持。套接字仿真器(套接字核心驱动程序)和传输驱动程序接口,起到了Winsock和传输协议之间的通信桥梁作用。如图3所示,Winsock是网络通信应用程序于套接字仿真器间的接口,TDI是套接字仿真器和传输协议间的接口套接字核心模式,驱动程序复杂连接和缓冲区管理,以便向应用程序提供套接字仿真(在AFDSYS文件中实现),同时负责与底层传输驱动程序对话传输驱动程序接口(T
5、DI)负责核心模式驱动程序与传输协议间的通信。 图3 套接字通信机制示意图当应用程序利用Winsock发送和接收数据时,是由核心模式驱动程序AFDSYS负责管理发送和接收缓冲区来发送和接收数据。当应用程序调用send或WSASend函数来发送数据时,AFDSYS在后台负责把数据复制进他自己的发送缓冲区,然后send或WSASend函数立即返回,AFDSYS在后台把数据发送出去,远程客户端接收数据的情况也类似,由接收方的AFDSYS在后台负责把数据复制到自己的接收缓冲区,然后应用程序调用recv或WSARecv函数来接收数据时,把数据由AFDSYS管理的接收缓冲区复制到应用程序提供的缓冲区中。A
6、FDSYS管理的发送缓冲区SO-SNDBUF和接收缓冲区SO-RECVBUF在缺省时两个缓冲区的大小都为8,192个字节,但可以根据实际要求由应用程序设定,由于我们传输的对象是大数据量文件,因此需要对系统的发送缓冲区和接收缓冲区作相应的设定,以保障大数据量的文件数据的发送的接收。1.2 问题的分析1.2.1 通信的模式由于是实现点对点的文件传输,因此在程序中我们使用的是C/S的模式来实现通信。对于C/S的模式,即分为客户端和服务端。服务端用来接收客户端的连接,实现两端之间互相传输文件。采用C/S的模式可以更好的体现程序的功能设计思想,充分调用在LAN中的server和client两方面的处理能
7、力,极大的减少网络上的信息流通量。C/S体系结构有可能提供一种开放式的、易伸缩扩展的分布式计算机环境,并保护硬件等投资。1.2.2 传输的可靠性要想实现文件的可靠性传输,可以使用流式套接字。因为流式套接字提供面向连接的、无差错的、发送顺序一致的、包长度不限和非重复的网络信息的传输,能提供更好的可靠性。而对于数据报套接字提供的是无连接的服务,以独立的数据报进行传输,不保证顺序性、可靠性和无重复性,相比之下用流式套接字能提供更好的的可靠性传输。2 程序设计与实现2.1 程序设计2.1.1 总体设计本程序的文件传输系统的实现应包含服务端模块、客户端模块、界面显示模块等几个部分,整个程序采用VC+6.
8、0完成,通信部分采用WINSOCK。程序使用流式套接字,基于C/S模型。在设计GUI界面时把客户端和服务端放在一个界面中,根据用户需要将程序设置成客户端和服务端。服务器和客户机的基本流程如图4所示。在通信的时候主要可以分为两个部分,一个部分是控制信息的传输部分,而另一个部分就是文件的传输部分。传送的控制信息可以包含发送文件的请求,文件的名称、大小等,由于这方面的数据量比较小,因此采用了MFC所提供的CSocket类的串行化技术来实现。对于文件的传输,由于数据量相对来说比较大,所以用两个线程来实现文件的传输,一个线程用于发送,一个线程用于接收。图5是一个成功的文件传输过程的流程。 客户机服务器
9、创建CClientSocket类的对象创建CServerSocket类的对象Connect(),将套接字与服务器相连将sockets与本地IP和相应的端口绑定Listen(),监听来自客户端的连接是否有连接到服务器?否显示错误信息接收客户端的连接请求是否有建立连接?不为客户端建立连接,显示错误信息ReceiveMsg/()SendMsg(),在套接字上收发信息是否 为客户端建立连接SendMsgReceiveMsg/()SendMsg(),在套接字上收发信息 图4 服务器和客户机的基本流程 图5 文件传输过程交互图2.1.2 模块设计 (1)服务端模块 定义一个服务器端的套接字的类CServe
10、rSocket继承于CSocket类,创建一个类CServerSocket的对象,作为程序窗口类CFileTransfersDlg的成员变量。在服务器端建立一个类CServerSocket的对象,来监听客户端的连接。由于采用CSocket类的串行化技术来发送和接收信息,因此创建一个消息类CMessage继承类CObject来封装信息。可用函数Serialize(CArchive& ar)来实现串行化技术。最后用析构函数来结束Socket 连接和释放Socket所占用的资源。 (2)客户端模块定义一个客户端的套接字的类CClientSocket继承于CSocket类,创建一个类CClientSo
11、cket的对象,作为程序窗口类CFileTransfersDlg的成员变量。在客户器端建立一个类CClientSocket的对象,来与服务器建立连接。同服务器端一样使用消息类CMessage封装信息,从而实现消息的接收和发送。可用函数Serialize(CArchive& ar)来实现串行化技术。最后用析构函数来结束Socket 连接和释放Socket所占用的资源。(3)界面显示模块面向对象程序设计主要是基于用户事件响应的设计方式。而客户端图形界面(GUI)设计的中心问题是用户控制式。现代面向对象程序是事件驱动的,对象响应事件(消息)。对象之间的内部通信由外部用户激活的事件来触发。友好的界面设
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机网络 课程设计 文件传输
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内