局域网文件传送

上传人:橙** 文档编号:333363890 上传时间:2022-09-01 格式:PDF 页数:22 大小:1.19MB
返回 下载 相关 举报
局域网文件传送_第1页
第1页 / 共22页
局域网文件传送_第2页
第2页 / 共22页
局域网文件传送_第3页
第3页 / 共22页
局域网文件传送_第4页
第4页 / 共22页
局域网文件传送_第5页
第5页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《局域网文件传送》由会员分享,可在线阅读,更多相关《局域网文件传送(22页珍藏版)》请在金锄头文库上搜索。

1、通达学院专业课程设计 I 报告(2010/2011 学年 第 二 学期)题目:局域网文件传输专业软件工程学生姓名范巍班级学号08003023 指导教师陈云芳指导单位计算机学院软件工程系日期2011.07.07 名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 22 页 -1 指导教师成绩评定表学生姓名班级学号专业评分内容评分标准优秀良好中等差平时成绩认真对待课程设计,遵守实验室规定,上机不迟到早退,不做和设计无关的事设计成果设计的科学、合理性功能丰富、符合题目要求界面友好、外观漂亮、大方程序功能执行的正确性程序算法执行的效能设计报告设计报告正确合理、反映系统设计流程文档内容详实程度

2、文档格式规范、排版美观验收答辩简练、准确阐述设计内容,能准确有条理回答各种问题,系统演示顺利。评分等级指导教师简短评语指导教师签名日期备注评分等级有五种:优秀、良好、中等、及格、不及格名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 22 页 -2 局域网文件传输一、课题内容和要求内容:本次课题的研究内容主要是实现局域网内文件的传输,要求可以将本机的本件通过软件传输给局域网内任意机器。实现文件的共享。计算机文件属于文件的一种,与普通文件载体不同,计算机文件是以计算机硬盘为载体存储在计算机上的信息集合。文件可以是文本文档、图片、程序等等。文件传输一般需要经过两个步骤,一是网络的链接;

3、二是文件的传输。要求:(1)软件可以自动配置本机IP。(2)软件可以实现两台电脑间的信息传送。(3)软件可以实现两台电脑间文件的传输。(4)软件可以显示传输中文件的大小,名称和传输进度。(5)软件可以根据不同原因报错。二、设计思路分析在设计之初,首先需要确定是主要两个方面:一,通信的模式:由于是实现点对点的文件传输,因此在程序中我们使用的是C/S 的模式来实现通信。对于 C/S 的模式,即分为客户端和服务端。服务端用来接收客户端的连接,实现两端之间互相传输文件。采用 C/S 的模式可以更好的体现程序的功能设计思想,充分调用在 LAN中的 server 和 client两方面的处理能力,极大的减

4、少网络上的信息流通量。C/S 体系结构有可能提供一种开放式的、易伸缩扩展的分布式计算机环境,并保护硬件等投资。二,传输的可靠性:要想实现文件的可靠性传输,可以使用流式套接字。因为流式套接字提供面向连接的、无差错的、发送顺序一致的、包长度不限和非重复的网络信息的传输,能提供更好的可靠性。而对于数据报套接字提供的是无连接的服务,以独立的数据报进行传输,不保证顺序性、可靠性和无重复性,相比之下用流式套接字能提供更好的的可靠性传输。在确定下以上两个方面后,我们就可以初步的确定软件的基本构成:客户端,名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 22 页 -3 服务端以及编程主要应用的函

5、数。三、概要设计一,总体设计本程序的文件传输系统的实现应包含服务端模块、客户端模块、界面显示模块等几个部分,整个程序采用VC+6.0 完成,通信部分采用WINSOCK。程序使用流式套接字,基于C/S 模型。在设计GUI 界面时把客户端和服务端放在一个界面中,不必用户自己选择。以下是 WINSOCK 常用的函数以及声明方法:WSAStartup 功能:加载 Winsock DLL 的相应版本。格式:int WSAStartup(WORD wVersionRequested,LPWSADATA lpWSAData);Socket 功能:创建一个套接字。格式:SOCKET scoket(int af

6、,int type,int protocol);Accept 功能:在指定套接字上接受一个连接。格式:SOCKET PASCAL FAR accept(SOCKET s,struct sockaddr FAR*addr,int FAR*addrlen);Bind 功能:将一本地地址与一套接字绑定。格式:int bind(SOCKET s,const struct sockaddr*name,int namelen);名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 22 页 -4 Connect 功能:用于建立于一个服务器端的连接。格式:int PASCAL FAR connect

7、(SOCKET s,const struct sockaddr FAR*name,int namelen);Closesocket 功能:关闭一个套接字。格式:int PASCAL FAR closesocket(SOCKET s);Listen 功能:将套接字置为监听模式,等待客户端提出的连接申请。格式:int PASCAL FAR listen(SOCKET s,int backlog);Send 功能:向一个已连接的套接字发送数据。格式:int PASCAL FAR send(SOCKET s,const char FAR*buf,int len,int flags);Recv 功能:从

8、已建立连接的套接字接收数据。格式:int PASCAL FAR recv(SOCKET s,char FAR*buf,int len,int flags);在通信的时候主要可以分为两个部分,一个部分是控制信息的传输部分,而另一个部分就是文件的传输部分。传送的控制信息可以包含发送文件的请求,文件的名称、大小等,由于这方面的数据量比较小,因此采用了MFC 所提供的名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 22 页 -5 CSocket类的串行化技术来实现。对于文件的传输,由于数据量相对来说比较大,所以用两个线程来实现文件的传输,一个线程用于发送,一个线程用于接收。以下是一个成功

9、的文件传输过程的流程。服务器创建 CServerSocket 类的对象将 sockets 与本地 IP 和相应的端口绑定Listen(),监听来自客户端的连接接收客户端的连接请求是 否 有 建立连接?不为客户端建立连接,显示错误信息为客户端建立连接ReceiveMsg/()SendMsg(),在套接字上收发信息名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 22 页 -6 以上是一个成功的文件传输过程的流程。下面为大家介绍以下服务器和客户端的意义。客户端(Client)客户端(Client)或称为用户端,是指与服务器相对应,为客户提供本地服务的程序。一般安装在普通的客户机上,需要

10、与服务端互相配合运行。因特网发展以后,较常用的用户端包括了如万维网使用的网页浏览器,收寄电子邮件时的电子邮件客户端,以及即时通讯的客户端软件等。服务器(Server)服务器指一个管理资源并为用户提供服务的计算机软件,通常分为文件服务器、数据库服务器和应用程序服务器。运行以上软件的计算机或计算机系统也被称为服务器。相对于普通PC来说,服务器在稳定性、安全性、性能等方面都要求更高,因此 CPU、芯片组、内存、磁盘系统、网络等硬件和普通PC有所不同。客户端创建 CClientSocket 类的对象Connect(),将套接字与服务器相连是 否 有 连 接到服务器?ReceiveMsg/()SendM

11、sg(),在套接字上收发信息显 示 错 误信息名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 22 页 -7 上图是一个完整传输过程的交互图。二,模块设计(1)服务端模块定义一个服务器端的套接字的类CServerSocket 继承于 CSocket 类,创建一个类 CServerSocket 的对象,作为程序窗口类CFileTransfersDlg的成员变量。在服务器端建立一个类CServerSocket 的对象,来监听客户端的连接。由于采用CSocket 类的串行化技术来发送和接收信息,因此创建一个消息类CMessage继承类 CObject 来封装信息。可用函数Seriali

12、ze(CArchive&ar)来实现串行化技术。最后用析构函数来结束Socket 连接和释放 Socket 所占用的资源。(2)客户端模块定义一个客户端的套接字的类CClientSocket继承于 CSocket 类,创建一个类 CClientSocket的对象,作为程序窗口类 CFileTransfersDlg的成员变量。在名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 22 页 -8 客户器端建立一个类CClientSocket的对象,来与服务器建立连接。同服务器端一样使用消息类CMessage封装信息,从而实现消息的接收和发送。可用函数Serialize(CArchive&

13、ar)来实现串行化技术。最后用析构函数来结束Socket 连接和释放 Socket 所占用的资源。(3)界面显示模块面向对象程序设计主要是基于用户事件响应的设计方式。而客户端图形界面(GUI)设计的中心问题是用户控制式。现代面向对象程序都是用消息来驱动的。对象之间的内部通信由外部用户激活的事件来触发。友好的界面设计包括以下几点方针,包括用户可控性、一致性、和客户化、反馈性。由于客户端程序与服务器程序很类似,所以就把客户端与服务器端打包在一起,这样也方便了文件的互传,只要安装了此软件,你既可以把本地主机当做服务器向远地主机发送文件,又可以把本地主机当做客户机接受从远地主机发来的文件。本程序的软件

14、的GUI界面下图。名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 22 页 -9 四、详细设计(1)建立一个新工程FileTransfers 使用 MFC AppWizard(exe)建立一个新项目 FileTransfers,选择基于对话框的应用,并在向导的第四步中,选择“Windows Socket”选项。程序中所需的文件如下图:(2)各模块的具体代码自动获取本地 IP 并配置CString strLocalName;GetLocalHostName(strLocalName);CString strLocalIP;GetIpAddress(strLocalName,strL

15、ocalIP);m_MyIp.SetWindowText(strLocalIP);/得到本地的 ip CString text=MyProgram TCP 方式;SetWindowText(text);创建 TCP监听线程UINT _ListenTcpThread(LPVOID lparam)CFiletranDlg*pDlg=(CFiletranDlg*)lparam;if(pDlg-StopServer=true)return-1;CSocket sockSrvr;pDlg-m_Potr=PORT;/保存当前使用端口,用于关闭int createSucceed=sockSrvr.Creat

16、e(pDlg-m_Potr);if(createSucceed=0)AfxMessageBox(_ListenTcpThread Create错名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 22 页 -10 误!+pDlg-GetError(GetLastError();return-1;int listenSucceed=sockSrvr.Listen();/开始监听if(listenSucceed=0)AfxMessageBox(_ListenTcpThread Listen错误!+pDlg-GetError(GetLastError();return-1;CSocket recSo;SOCKADDR_IN client;int iAddrSize=sizeof(client);int acceptSucceed=sockSrvr.Accept(recSo,(SOCKADDR*)&client,&iAddrSize);/接受连接并取得对方IP if(acceptSucceed=0)AfxMessageBox(_ListenTcpThread Accept错误!+p

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 初中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号