欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOCX文档下载  

    实验七网络程序设计综合实验.docx

    • 资源ID:805747       资源大小:335.45KB        全文页数:26页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    实验七网络程序设计综合实验.docx

    网络程序设计实验报告实验名称:W名SoCk编程接口实验实验类型:设计型指导教师:贾浩专业班级:信安1204姓名:马灿学号:20123252电子邮件:实验地点:东6E307实验日期:实验成绩:实验七网络程序设计综合实验摘要:本课程设计包含了文件传输协议的简单设计及实现。文件传送协议是一种最基本的应用层协议按照客户/服务器的模式进行工作,提供交互式的访问,是INTERNET使用最广泛的协议之一。文件传输协议的简单设计及实现建立在计算机网络实验环境TCP/IP网络体系结构之上,使用socket编程接口编写两个程序,分别为客户程序(Client.c)和服务器程序(server,c),利用了己有网络环境设计并实现简单应用层协议。本设计包括了具体设计任务,基本思路及所涉及的相关理论,设计流程图,调试过程中出现的问题及相应解决办法,实验运行结果,核心程序,个人体会及建议等。关键词:SOCKET编程,FTPclientZserver程序一.问题描述及设计思路1.I问题描述服务器端:1 .指定一个目录作为FTP目录(之后所有的文件操作均在此目录下进行)2 .接收客户端的命令请求并提供相应的服务。客户端:完成及FTP用户的人机界面,以命令的方式向服务器请求服务,主要的命令有:1.CONNECTIP地址端口号3 .指定FTP服务器的IP地址和端口号,连接到服务器。响应:连接成功/失败。3 .LOGlN用户名4 .用户登录(假设在服务器端有用户管理功能)5 .响应:若用户不存在,提示“无此用户":若用户存在,提示“密码:";用户输入密码后,若正确提示“登录成功”;若不成功,提示"密码错误”。6 .3.DIR7 .显示FTP服务器的FTP目录的文件列表(假设无子目录)8 .响应:目录列表(只要文件名即可)。9 .4.GET文件名10 .将FTP目录下的文件下载到本地,支持断点续传11 .响应:传送成功/失败/无此文件。12 .5.PUT文件名13 .将本地文件上传到FTP目录,支持断点续传14 .响应:传送成功/失败/无此文件。15 .6.HELP(客户端和服务器端均有该功能)16 .实验环境本次实验采用MFC工程工程采用MFC对话框界面工程名称为MyServer和FTPSOCKETo17 .详细设计过程1. 2设计思路2. FTP协议基础FTP是TCP/IP协议组中的协议之一,该协议是Internet文件传送的基础,它由一系列规格说明文档组成。目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上或从自己计算机中拷贝至远程计算机上。在TCP/IP协议中FTP标准命令TCP端口号为21,Port方式数据端口为20。3. 网络文件传输原理在通信的时候主要可以分为两个部分。一个部分是用于传送控制信息,例如发送文件的请求文件的名称、大小等。采用MFC所提供的CSoCket类的串行化技术来实现,而另一个部分就是文件的传输部分。对于文件的传输,由于数据量相对来说比较大,使用两个线程。一个用于发送,一个用于接收。这两个部分在具体实现的时候分别建立有自己的套接字。FTP编程基础4. FTP传输原理FTP协议使用两条单独的TCP连接一条专用于发送FTP命令另一条则专用于传递数据。初始建立连接时服务器在21号端口上接收来自客户端的命令连接。当需要传送数据时文件列表、文件数据等客户端向服务器发出Port命令并进入监听状态等待来自服务器的数据连接请求。总体功能模块图服务器端线程控制:线程类别:选择线程类别,单线程或多线程传送文件线程数设置:若选择多线程,可自行设置线程数目,若选择单线程,则默认线程数目为1启动服务器:设置好线程控制后,点击“启动”按钮启动服务器端选取文件:选择要发送给客户端的文件发送文件:获取要发送文件属性:获取到要传送给客户端的文件的基本属性,包括:文件名,大小(B),已发送多少(B),文件路径发送进度显示:显示给客户端发送文件的进度ChatWithSerVer:启动采用UDP协议的简单聊天系统,用来及客户端进行通讯(客户端和服务器端都得启动,否则无法收到)Help:显示服务器端使用说明客户端功能说明:握手服务器:输入服务器端IP地址,点击"握手服务器”按钮,获取服务器端启动的线程数连接服务器:及服务器进行连接接收文件:获取接收文件属性:获取到要接收的服务器端传来的文件的基本属性,包括:文件名,大小(B),已接收多少(B),文件存储路径接收进度显示:显示已接收文件的进度ChatWithServer:启动采用UDP协议的简单聊天系统,用来及客户端进行通讯(客户端和服务器端都得启动,否则无法收到)获取IP地址:获取本机的主机名及IP地址HELP:显示客户端使用说明2、系统结构即时通讯(1)文件传输流程图2、用例描述(1)文件传送用例描述用例名称I服务器端文件传输参与者:服务器端管理员W:服务器端管理员设置线程类别和启动的线程数目,启动服务器,选取文件进行发送前置条件:服务器端管理员已经运行服务器端程序基三碗:1 .服务器端管理员通过鼠标点击线程类别和线程数目下拉列表框进行设置,然后点击"启动"按钮,启动服务器.2点击"选取文件"按钮,选择要传送给客户端的文件,在文件属性框中显示出相应文件的信息,点击"发送文件"按钮,进行文件传输.3 .点击"退出"搜钮,退出服务器端4 .点击"帮助"按钮可以查看使用说明5 .用例终止真他事件流AIl在按泼送按钮之前,服务器罐管理员随时可以搜"退出"按钮,终止与客户端的酷携,即终止与客户端之间的文件传送.异常事件流:1 .提示错误信息,文件传送失败用例名称,客户端文件传输参与者:客户iWiM客户输入服务器端IP地址,链接服务器,进行文件捂收BSf客户运行客户端应用程序基本事件流:2 .服务器端选择账户,点击开始服务,则进入监听状态,等待客户端请求.3 .客户端输入用户名及密码,若与服务器端匹配,则在文本框中显示连接服务器,登陆用户名.连接失败则显示"连接失败".4 .在diet列表框中点击要上传的文件,弹出对话框,寻问是否要上传,点击是,则上传文档至服务器篇.并将文档列表显示在列表框中.5 .点击终止服务,则退出程序.其他事件2SA1:在按技收技钮之前,客户随时可以按"停止接收"按钮,终止与服务器端之间的文件传送.在文件开始接收后,点击"停止接收"按钮,也籍止与服务器端之间的文件传送.异常事Fm:i.提示情误信息,文件传送失败二.功能实现及主要代码服务器端启动服务,端口号为8888客户端连接服务,服务器的ip地址为111.9.118.115连接成功添加用户用户验证上传文件2.txt,上传到C盘刷新服务器,c盘中有2.txt,上传成功晔ZthlfcIJN乐4.TEMP2014/5/522:06文件夹,.TSLOG2013/4/411:01文件安a.Windows2014/5/1915:29文件典2东is里j.xampp2013/1/1719:29文咤ss2014/4/813:13文件夹【计IwI.wt文件央2014/5/516:55文件夹LTieafi(U)用户2012/12/2137文件夹J下箕(Ck)2014/5/211&22文&又植IKB-x*e布、<AJPG2014/4/721r0JPG文件187KB.I添加文件下载文件文件下载到E盘J音乐.uru*trw-.ProgramFiles3ON&JA4YU2014/2/2521X)8XT+文件夹M东庭里计直相fi作童妩2014/1A012:45文做计算机网络2013/11/2512:24文件夹JS2013/11/3015:55文件夹)计算机软件费试2014/3/1513:54文件夹&本地崖盘(G)数字图像Ia号分析2014/4/621:43文做J下栽Q)人网络程序及计2014/4/262(M7文件夹JBfi(E:)新=件突2013/3A117:20文4快Q个人(E)J,虚拟机2013/10/915:50文件夹JrH(G:)U22014/5/21167义本义档1KBHPV220W(L)Q用塔三实验总结通过这次实验,我很好的了解到了文件传输的流程,了解到文件传输协议使得主机间可以共享文件。FTP使用TCP生成一个虚拟连接用于控制信息,然后再生成一个单独的TCP连接用于数据传输。控制连接使用类似TELNET协议在主机间交换命令和消息。文件传输协议是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一,它属于网络协议组的应用层。FTP客户机可以给服务器发出命令来下载文件,上传文件,创建或改变服务器上的目录。对套接字的使用和通信模型通信机制有了进一步了解,也熟练的掌握了如何选择通信模型。对各个函数的使用也有了进一步了解。四附录代码:服务器初始化套接字BOOLCFTPServerDlg:IlnitSocketOif(m_sock=INVALID_SOCKET)m_sock=socket(AFlNET,SOCK_STREAM,0);if(INVALID_SOCKET=m_sock)MeSSageBoX("创建套接字失败!");CStringsPort;GetDlgItemdDCEDITPORT)->GetWindowText(sPort);MessageBox("开启的端口:"+SPOrt);intnPort=atoi(sPort);if(nPort<1nPort>65535)MeSSageBOX("端口号错误!");returnFALSE;SockaddrinSrVAddr;srvAddr.sin_addr.Sun.Saddr=htonl(INADDRANY);srvAddr.Sinfamily=AF_INET;srvAddr.sin_port=htons(nPort);if(bind(m_sock,(SOCKADDR*)&srvAddr,Sizeof(SOCKADDR)=SOCKET_ERROR)closesocket(msock);MessageBox("绑定套接字失败!");returnFALSE;returnTRUE;FileInfofile10;intcount=O;CStringstr10;使用异步选择模型HCURSORCFTPServerDlg:OnQueryDragIcon()return(HCURSOR)mhlcon;/启动服务"voidCFTPServerDlg:OnStartO进入监听状态ItiitSocket();/设置SoCket为窗口通知消息类型进入监听模式intmnClient=listen(msock,5);if(mnClient!=0)MeSSageBox("Listenerror!,');closesocket(msock);return:/MeSSageBOx("Listensuccess!*);注册网络注册网络异步事件,m_hWnd为应用程序的主对话框或主窗口的句柄if(:WSAAsyncSelect(msock,mhWnd,WM_SOCKET,fDAcceptIfdcloseIfDReadIfdwrite)=socket_error)MessageBox(,'WSAAsyncSelectfail!v);elseMessageBox("WSAAsyncSelectsuccess!");I客户端连接服务voidCFTPClientDlg:OnConnect()先获得IP控件的值BYTEnFieldO,nFieldl,nField2,nField3;mIP.GetAddress(nFieldO,nFieldl,nField2,nField3);charbuff20;wsprintf(buff,"%d.%d.%d.%d",nFieldO,nFieldl,nField2,nField3);MessageBox(buff);"获取端口号的值intport=aLoi(mport);m_sock=SoCket(AFNET,SOCK.STREAM,O);if(INVALID_SOCKET=m_sock)/MeSSageBoX("创建套接字失败!");return:/else/MessageBox("创建套接字成功!");SOCKADDR_INsrvAddr;srvAddr.sinaddr.Sun.Saddr=inet_addr(buff);srvAddr.sin_family=AF_INET;srvAddr.sin_port-htons(port);/srvAddr.sinport-htons(8888);if(:connect(msock,(sockaddr*)&srvAddr,sizeof(srvAddr)=-1)MeSSageBOX("连接失败");return:elseMeSSageBOX("连接服务器成功");UpdateList();上传文件/上传文件到服务器/voidCFTPClientDlg:OnPutFile()*if(!UserVerfify()MeSSageBox("该用户不存在");return:*/CFileDialogfileDlg(TRUE,NULL,NULL);if(fiIeDlg.DoModalO=IDCANCEL)return;"文件名CStringPileName1fiIePath;文件路径CStringfiIeType;intfileLength;fiIePath=fiIeDlg.GetPathNameO;CFilenewFile;newFile.Open(filePath,CFile:modeReadCFi1e:HiodeReadWrite);获取文件的名字,大小,路径fiIeName=newFile.GetFileName();fiIeName+="味别文件名和传输的内容fileLength-newFile.GetLengthO;/char*pbuf=newchar1024;文件内容/memset(pbuf,0,1024);char*pbuf=newcharMAXSIZE;文件内容memset(pbuf,O,MAXSIZE);/charpbf1024=0:/UINTnBytesRead=newFile.Read("文件类型"为了区/buf存储/bf存储pbuf, fileLength);MAXSIZE);/-用数字1表示上传文件名的识别码/UINTnBytesRead=newFile.Read(pbuf,/PileName=T+111eName:CStringpbuf1:pbuf1.Format(pbuf);fiIeName="1"+fi1eName+pbuf;/char*PNamel=(LPSTR)(LPCTSTR)fIleName;/strcat(fNamel,pbuf);/此语句有问题/MessageBox(FileName);/MessageBoxCfNamel);newFile.Close();if(nBytesRead>0)/if(send(msock,fNamel,strlen(fNamel)+l,O)=SOCKETERROR)if(send(msock,fileName,strlen(fileName)+1,O)SOCKETERROR)return;下载文件列表voidCFTPClientDlg:ZOnDblclkFileList(NMHDR*pNMHDR,LRESULT*pResult)/TODO:Addyourcontrolnotificationhandlercodehereintmcount=m_fileList.GetItemCount();if(mcount<=0)MeSSageBOx("没有可以下载的文件列表!");return;用户验证BOOLCFTPClientDlg:IUserVerfify()returnTRUE;voidCFTPClientDlg:OnButtonUser()/TODO:AddyourcontrolnotificationhandlercodehereCStringuser;GetDlgItem(IDC_EDIT_USERNAME)->GetWindowText(user);user="4"+user;char*p=(LPSTR)(LPCTSTR)user;MessageBox(user);if(send(m_sock,p11024jO)=SOCKEERROR)MeSSageBoX("发送失败");return;charu1024二0;if(recv(m_sock,u,1024,O)=SOCKET_ERROR)MeSSageBox("接受数据失败");return;MessageBox(u);if(u0='T)MeSSageBox("用户验证成功");if(u0='F')MeSSageBOx("用户验证失败");m_sock=INVALID_SOCKET;1

    注意事项

    本文(实验七网络程序设计综合实验.docx)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开