还剩20页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
网络程序设计实验报告实验名称W名sock编程接口实验实验类型设计型_________________________指导教师贾浩___________________________专业班级信安1204__________________________姓名马灿___________________________学号20123252__________________________电子邮件___________________________________实验地点东6E307__________________________实验日期______________________________________二.功能实现及主要代码服务器端启动服务,端口号为8888客户端连接服务,服务器的ip地址为
111.
9.
118.115连接成功添加用户用户验证上传文件
2.txt,上传到C盘刷新服务器,c盘中有
2.txt,上传成功TEMP2014/5/522:06文件夹TSLOG2013/4/411:01文件夹Windows2014/5/1915:29文件夹运组上xampp2013/1/1719:29文件夹美图图库2014/4/813:13文件夹・计算机新建文件夹2014/5/516:55文件夹本IB磁盘C:加用户2012/12/213:07文件夹,-下载D:口22014/5/2116:22文本文档1KB画AJPG2014/4/721:50JPG文件187KB~磅由心添加文件下载文件文件下载到E盘unuxtTH-乂r+c*:』音乐Program Files2014/2/2521:08文件夹计算机操作系统2014/1/1012:45文件夹通家庭组上计算机网络2013/11/2512:24文件夹X都呼2013/11/3015:55文件夹0・计算机X软件测试2014/3/1513:54文件夹匕本地磁盘C:数字图像隙写分析2014/4/621:43文件夹口下载D:网络程序设计2014/4/2620:47文件夹j诞E」1X新建文件夹2013/3/1117:20文件夹Q个人F:▲,虐拟机2013/10/915:50文件夹邕22014/5/2116:27文本文档1KB/L-窿H G:一HP V220W0:6I网珞三实验总结通过这次实验,我很好的了解到了文件传输的流程,了解到文件传输协议使得主机间可以共享文件FTP使用TCP生成一个虚拟连接用于控制信息,然后再生成一个单独的TCP连接用于数据传输控制连接使用类似TELNET协议在主机间交换命令和消息文件传输协议是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一,它属于网络协议组的应用层FTP客户机可以给服务器发出命令来下载文件,上传文件,创建或改变服务器上的目录对套接字的使用和通信模型通信机制有了进一步了解,也熟练的掌握了如何选择通信模型对各个函数的使用也有了进一步了解四附录代码服务器初始化套接字BOOL CFTPServerDlg::InitSocketifm_sock==INVALID_SOCKETm_sock=socketAF_INET,SOCK_STREAM,0;if INVALID_SOCKET=二m_sockMessageBox〃创建套接字失败!〃;return FALSE;CString sPort;GetDlgltemIDC_EDIT_PORT-GetWindowTextsPort;MessageBox〃开启的端口:〃+sPort;int nPort=atoisPort;if nPort1||nPort65535MessageBox〃端口号错误!〃;return FALSE;SOCKADDR_IN srvAddr;srvAddr.sin_addr.S_un.S_addr=htonlINADDR_ANY;srvAddr.sin_family=AF_INET;srvAddr.sin_port=htons nPort;ifbindm_sock,SOCKADDR*srvAddr,sizeofSOCKADDR==S0CKET_ERR0Rclosesocketm_sock;MessageBox〃绑定套接字失败!〃;return FALSE;return TRUE;Fileinfo file[10int count=0;CString str
[10];使用异步选择模型HCURSOR CFTPServerDlg::OnQueryDraglconreturn HCURSORmhlcon;void CFTPServerDlg::0nStart〃进入监听状态InitSocket;//设置socket为窗口通知消息类型//进入监听模式int m_nClient=listenm_sock,5;ifmnClient!=0MessageBox^Listen error!”;closesocketm_sock;return;//MessageBoxz,Listen success!/z;〃注册网络注册网络异步事件,m_hWnd为应用程序的主对话框或主窗口的句柄if::WSAAsyncSelectm_sock,m hWnd,WM SOCKET,FD_ACCEPT|FD_CLOSE|FD_READ|FD_WRITE二二SOCKET_ERRORMessageBox,zWSAAsyncSelect fail!”;elseMessageBox/zWSAAsyncSelect success!,z;客户端连接服务void CFTPClientDlg::0nConnect〃先获得IP控件的值BYTE nFieldO,nFieldl,nField2,nField3;m_IP.GetAddress nFieldO,nFieldl,nField2,nField3;char buff
[20];wsprintf buff,,,%d.%d.%d.%d〃,nFieldO,nFieldl,nField2,nField3;MessageBoxbuff;〃获取端口号的值int port=atoim_port;m_sock=socket AF_INET,SOCK_STREAM,0;if INVALID_SOCKET=二m_sock//MessageBox〃创建套接字失败!〃;return;//else//MessageBox〃创建套接字成功!〃;SOCKADDR_IN srvAddr;srvAddr.sin_addr.S_un.S_addr=inet_addrbuff;srvAddr.sin_family=AF_INET;srvAddr.sin_port=htons port;//srvAddr.sin_port=htons8888;if::connectm_sock,sockaddr*srvAddr,sizeofsrvAddr==-1实验成绩:MessageBox〃连接失败〃;return;elseMessageBox〃连接服务器成功〃;UpdateList;上传文件//-----------------------------------上传文件到服务器void CFTPClientDlg::OnPutFile/*if!UserVerfify MessageBox〃该用户不存在〃;return;CFileDialog fileDlgTRUE,NULL,NULL;iffileDlg.DoModal==IDCANCELreturn;CString fileName,filePath;〃文件名文件路径CString fileType;//文件类型int fileLength;filePath=fileDlg.GetPathName;CFile newFile;newFile.OpenfilePath,CFile::modeRead|CFile::modeReadWrite;〃获取文件的名字,大小,路径fileName=newFile.GetFileName;〃为了区fileName+=〃#〃;别文件名和传输的内容fileLength=newFile.GetLengthO;//pbuf存储//char*pbuf=new char
[1024];文件内容//memset pbuf,0,1024;//pbuf存储char*pbuf=new char[MAXSIZE];文件内容memsetpbuf,0,MAXSIZE;//char pbuf
[1024]={0};//UINT nBytesRead=newFile.Read pbuf,fileLength;UINT nBytesRead=newFile.Read pbuf,MAXSIZE;//fileName=〃1〃+fileName;CString pbuf1;pbuf
1.Formatpbuf;fileName=〃1〃+fileName+pbuf;//char*fName1=LPSTRLPCTSTRfileName;//strcat fNamel,pbuf;〃〃〃〃〃〃〃〃〃〃〃/此语句有问题//MessageBoxfileName;//MessageBoxfNamel;newFile.Close;if nBytesRead0ifsendm_sock,fNamel,strlenfNamel+1,0==S0CKET_ERR0Rif sendm_sock,fileName,strlenfileName+1,0==S0CKET_ERR0Rreturn;下载文件列表void CFTPC1ientD1g::OnDb1c1kFi1eList NMHDR*pNMHDR,LRESULT*pResult//TODO:Add yourcontrol notificationhandler codehere用数字1表示上传文件名的识别码int m_count=m_fileList.GetltemCount;if m_count=0MessageBox〃没有可以下载的文件列表!〃;return;用户验证BOOL CFTPClientDlg::UserVerfify returnTRUE;void CFTPClientDlg::OnButtonUser//TODO:Add yourcontrol notificationhandler codehere CStringuser;GetDlgltem IDC_EDIT_USERNAME-GetWindowTextuser;〃〃/1Iuser=4+user;char*p=LPSTR LPCTSTRuser;MessageBoxuser;ifsendm_sock,p,1024,0==S0CKET_ERR0RMessageBox〃发送失败〃;return;char u
[1024]={0};if recvm_sock,u,1024,0=S0CKET_ERR0RMessageBox〃接受数据失败〃;return;MessageBoxu;ifu
[0]==TMessageBox用户验证成功”;ifu
[0]==FMessageBox〃用户验证失败〃;m sock二INVALID SOCKET;实验七网络程序设计综合实验摘要本课程设计包含了文件传输协议的简单设计及实现文件传送协议是一种最基本的应用层协议按照客户/服务器的模式进行工作,提供交互式的访问,是INTERNET使用最广泛的协议之一文件传输协议的简单设计及实现建立在计算机网络实验环境TCP/IP网络体系结构之上,使用socket编程接口编写两个程序,分别为客户程序client,c和服务器程序server,c,利用了已有网络环境设计并实现简单应用层协议本设计包括了具体设计任务,基本思路及所涉及的相关理论,设计流程图,调试过程中出现的问题及相应解决办法,实验运行结果,核心程序,个人体会及建议等关键词SOCKET编程,FTPclient/server程序一.问题描述及设计思路
1.1问题描述服务器端
1.指定一个目录作为FTP目录之后所有的文件操作均在此目录下进行
2.接收客户端的命令请求并提供相应的服务客户端完成及FTP用户的人机界面,以命令的方式向服务器请求服务,主要的命令有
1.CONNECTIP地址端口号
2.指定FTP服务器的IP地址和端口号,连接到服务器响应连接成功/失败
3.LOGIN用户名
4.用户登录(假设在服务器端有用户管理功能)
5.响应若用户不存在,提示“无此用户”;若用户存在,提示“密码”;用户输入密码后,若正确提示“登录成功”;若不成功,提示“密码错误”
6.
3.DIR
7.显示FTP服务器的FTP目录的文件列表(假设无子目录)
8.响应目录列表(只要文件名即可)
9.
4.GET文件名
10.将FTP目录下的文件下载到本地,支持断点续传
11.响应传送成功/失败/无此文件
12.
5.PUT文件名
13.将本地文件上传到FTP目录,支持断点续传
14.响应传送成功/失败/无此文件
15.
6.HELP(客户端和服务器端均有该功能)
16.实验环境本次实验采用MFC工程工程采用MFC对话框界面工程名称为MyServer和FTPSOCKETo
17.详细设计过程182设计思路
1.FTP协议基础FTP是TCP/IP协议组中的协议之一,该协议是Internet文件传送的基础,它由一系列规格说明文档组成目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上或从自己计算机中拷贝至远程计算机上在TCP/IP协议中FTP标准命令TCP端口号为21,Port方式数据端口为
202.网络文件传输原理在通信的时候主要可以分为两个部分一个部分是用于传送控制信息,例如发送文件的请求文件的名称、大小等采用MFC所提供的CSocket类的串行化技术来实现,而另一个部分就是文件的传输部分对于文件的传输,由于数据量相对来说比较大,使用两个线程一个用于发送,一个用于接收这两个部分在具体实现的时候分别建立有自己的套接字FTP编程基础
3.FTP传输原理FTP协议使用两条单独的TCP连接一条专用于发送FTP命令另一条则专用于传递数据初始建立连接时服务器在21号端口上接收来自客户端的命令连接当需要传送数据时文件列表、文件数据等客户端向服务器发出Port命令并进入监听状态等待来自服务器的数据连接请求总体功能模块图服务器端线程控制线程类别选择线程类别,单线程或多线程传送文件线程数设置若选择多线程,可自行设置线程数目,若选择单线程,则默认线程数目为1
②启动服务器设置好线程控制后,点击“启动”按钮启动服务器端选取文件选择要发送给客户端的文件3发送文件获取要发送文件属性获取到要传送给客户端的文件的4基本属性,包括文件名,大小B,已发送多少B,文件路径发送进度显示显示给客户端发送文件的进度
⑤ChatWithServer启动采用UDP协议的简单聊天系统,用来及客户端进行通讯客户端和服务器端都得启动,否则无法收到
⑥Help显示服务器端使用说明客户端功能说明握手服务器输入服务器端IP地址,点击“握手服务器”按钮,获取服务器端启动的线程数
②连接服务器及服务器进行连接
③接收文件获取接收文件属性获取到要接收的服务器端传来的文件的基本属性,包括文件名,大小B,已接收多少B,文件存储路径接收进度显示显示已接收文件的进度@ChatWithServer启动采用UDP协议的简单聊天系统,用来及客户端进行通讯客户端和服务器端都得启动,否则无法收到
⑤获取IP地址获取本机的主机名及IP地址
⑥HELP显示客户端使用说明
2、系统结构即时通讯.传送文件
3、主要功能流程图⑴文件传输流程图
2、用例描述⑴文件传送用例描述用例名称服务器端文件传输参与者;服务器端管理总雁砌:服务器端管理员设置线程类别和启动的线程数目,启动服务器,选取文件进行发送前置条件:服务器端管理员已经运行服务器端程序基神所启
1.服务器端管理员通过鼠标点击线程类别和线程数目下拉列表框进行设置,然后点击“启动”按钮,启动服务器
2.点击“选取文件”按钮,选择要传送给客户端的文件,在文件属性框中显示出相应文件的信息,点击“发送文件”按钮,进行文件传输
3.点击“退出”按钮,退出服务器端
4.点击“帮助”按钮可以查看使用说明
5.用例终止T其他事件流A在按“发送.按钮之前,服务器端管理员随时可以按“退出”按钮,终止与客户端的薛接,即终止与客户端之间的文件传送异常事件流:
1.提示错误信息,文件传送失败用例名称客户端文件传输参与者客户客户输入服务器端IP地址,醉接服务器,进行文件接收前置条件:客户运行客户端应用程序基本事件流
1.服务器端选择账户,点击开始服务,则进入监听状态,等待客户端请求
2.客户端输入用户名及密码,若与服务器端匹配,则在文本框中显示连接服务器,登陆用户名连接失败则显示“连接失败”
3.在diun【列表框中点击要上传的文件,弹出对话框,寻问是否要上传,点击是,则上传文档至服务器端并将文档列表显示在列表框中
4.点击终止服务,则退出程序其他事件流A1在按.接收.按钮之前,客户随时可以按“停止接收”按钮,终止与服务器端之间的文件传送在文件开始接收后,点击“停止接收”按钮,也终止与服务器端之间的文件传送异常事件流
1.提示错误信息,文件传送失败。
个人认证
优秀文档
获得点赞 0