实验七-网络程序设计综合实验汇总_第1页
实验七-网络程序设计综合实验汇总_第2页
实验七-网络程序设计综合实验汇总_第3页
实验七-网络程序设计综合实验汇总_第4页
实验七-网络程序设计综合实验汇总_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

网络程序设计网络程序设计 实验报告实验报告 实验名称 实验名称 winsock 编程接口实验 实验类型 实验类型 设计型 指导教师 指导教师 贾浩 专业班级 专业班级 信安 1204 姓姓 名 名 马灿 学学 号 号 电子邮件 电子邮件 实验地点 实验地点 东 6 E307 实实 验验 日日 期 期 实验实验成成绩绩 实验七实验七 网络程序设计综合实验网络程序设计综合实验 摘要摘要 本课程设计包含了文件传输协议的简单设计与实现 文件传送协议是一 种最基本的应用层协议按照客户 服务器的模式进行工作 提供交互式的访问 是 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 和 FTPSOCKET 17 详细设计过程 1 2 设计思路 1 FTP 协议基础 FTP 是 TCP IP 协议组中的协议之一 该协议是 Internet 文件传送的基础 它 由一系列规格说明文档组成 目标是提高文件的共享性 提供非直接使用远程 计算机 使存储介质对用户透明和可靠高效地传送数据 简单的说 FTP 就是 完成两台计算机之间的拷贝 从远程计算机拷贝文件至自己的计算机上或从自 己计算机中拷贝至远程计算机上 在 TCP IP 协议中 FTP 标准命令 TCP 端口号为 21 Port 方式数据端口为 20 2 网络文件传输原理 在通信的时候主要可以分为两个部分 一个部分是用于传送控制信息 例如发 送文件的请求文件的名称 大小等 采用 MFC 所提供的 CSocket 类的串行化技 术来实现 而另一个部分就是文件的传输部分 对于文件的传输 由于数据量 相对来说比较大 使用两个线程 一个用于发送 一个用于接收 这两个部分 在具体实现的时候分别建立有自己的套接字 FTP 编程基础 3 FTP 传输原理 FTP 协议使用两条单独的 TCP 连接 一条专用于发送 FTP 命令 另一条则专用 于传递数据 初始建立连接时 服务器在 21 号端口上接收来自客户端的命令连 接 当需要传送数据时 文件列表 文件数据等 客户端向服务器发出 Port 命令 并进入监听状态 等待来自服务器的数据连接请求 总体功能模块图 服务器端 功能说明 线程控制 线程类别 选择线程类别 单线程或多线程传送文件 线程数设置 若选择多线程 可自行设置线程数目 若选择单线程 则默认线程数目为 1 启动服务器 设置好线程控制后 点击 启动 按钮启动服务器端 选取文件 选择要发送给客户端的文件 发送文件 获取要发送文件属性 获取到要传送给客户端的文件的基本属性 包括 文件名 大小 B 已发送多少 B 文件路径发送进度显示 显示给客 户端发送文件的进度 ChatWithServer 启动采用 UDP 协议的简单聊天系统 用来与客户端进行通 讯 客户端和服务器端都得启动 否则无法收到 Help 显示服务器端使用说明 客户端 功能说明 握手服务器 输入服务器端 IP 地址 点击 握手服务器 按钮 获取服务器端 启动的线程数 连接服务器 与服务器进行连接 接收文件 获取接收文件属性 获取到要接收的服务器端传来的文件的基本 属性 包括 文件名 大小 B 已接收多少 B 文件存储路径接收进度显示 显示已接收文件的进度 ChatWithServer 启动采用 UDP 协议的简单聊天系统 用来与客户端进行通 讯 客户端和服务器端都得启动 否则无法收到 获取 IP 地址 获取本机的主机名及 IP 地址 HELP 显示客户端使用说明 2 系统结构 3 主要功能流程图 1 文件传输流程图 2 用例描述 1 文件传送用例描述 二 功能实现及主要代码 服务器端启动服务 端口号为 8888 客户端连接服务 服务器的 ip 地址为 111 9 118 115 连接成功 添加用户 用户验证 上传文件 2 txt 上传到 C 盘 刷新服务器 c 盘中有 2 txt 上传成功 添加文件 下载文件 文件下载到 E 盘 三三 实验总结实验总结 通过这次实验 我很好的了解到了文件传输的流程 了解到文件传输协议 使得主机间可以共享文件 FTP 使用 TCP 生成一个虚拟连接用于控制信息 然 后再生成一个单独的 TCP 连接用于数据传输 控制连接使用类似 TELNET 协议 在主机间交换命令和消息 文件传输协议是 TCP IP 网络上两台计算机传送文件 的协议 FTP 是在 TCP IP 网络和 INTERNET 上最早使用的协议之一 它属于网 络协议组的应用层 FTP 客户机可以给服务器发出命令来下载文件 上传文件 创建或改变服务器上的目录 对套接字的使用和通信模型通信机制有了进一步 了解 也熟练的掌握了如何选择通信模型 对各个函数的使用也有了进一步了 解 四四 附录附录 代码 服务器 初始化套接字 BOOL CFTPServerDlg InitSocket if m sock INVALID SOCKET m sock socket AF INET SOCK STREAM 0 if INVALID SOCKET m sock MessageBox 创建套接字失败 return FALSE CString sPort GetDlgItem IDC EDIT PORT GetWindowText sPort MessageBox 开启的端口 sPort int nPort atoi sPort if nPort 65535 MessageBox 端口号错误 return FALSE SOCKADDR IN srvAddr srvAddr sin addr S un S addr htonl INADDR ANY srvAddr sin family AF INET srvAddr sin port htons nPort if bind m sock SOCKADDR MessageBox 绑定套接字失败 return FALSE return TRUE FileInfo file 10 int count 0 CString str 10 使用异步选择模型使用异步选择模型 HCURSOR CFTPServerDlg OnQueryDragIcon return HCURSOR m hIcon 启动服务 void CFTPServerDlg OnStart 进入监听状态 InitSocket 设置 socket 为窗口通知消息类型 进入监听模式 int m nClient listen m sock 5 if m nClient 0 MessageBox Listen error closesocket m sock return MessageBox Listen success 注册网络注册网络异步事件 m hWnd 为应用程序的主对话框或主窗口的句柄 if WSAAsyncSelect m sock m hWnd WM SOCKET FD ACCEPT FD CLOSE FD READ FD WRITE SOCKET ERROR MessageBox WSAAsyncSelect fail else MessageBox WSAAsyncSelect success 客户端客户端 连接服务连接服务 void CFTPClientDlg OnConnect 先获得 IP 控件的值 BYTE nField0 nField1 nField2 nField3 m IP GetAddress nField0 nField1 nField2 nField3 char buff 20 wsprintf buff d d d d nField0 nField1 nField2 nField3 MessageBox buff 获取端口号的值 int port atoi m 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 addr buff srvAddr sin family AF INET srvAddr sin port htons port srvAddr sin port htons 8888 if connect m sock sockaddr return else MessageBox 连接服务器成功 UpdateList 上传文件上传文件 上传文件到服务器 void CFTPClientDlg OnPutFile if UserVerfify MessageBox 该用户不存在 return CFileDialog fileDlg TRUE NULL NULL if fileDlg DoModal IDCANCEL return CString fileName filePath 文件名 文件路径 CString fileType 文件类型 int fileLength filePath fileDlg GetPathName CFile newFile newFile Open filePath CFile modeRead CFile modeReadWrite 获取文件的名字 大小 路径 fileName newFile GetFileName fileName 为了区别文件名和传输的内 容 fileLength newFile GetLength char pbuf new char 1024 pbuf 存储文件内容 memset pbuf 0 1024 char pbuf new char MAXSIZE pbuf 存储文件内容 memset pbuf 0 MAXSIZE char pbuf 1024 0 UINT nBytesRead newFile Read pbuf fileLength UINT nBytesRead newFile Read pbuf MAXSIZE 用数字 1 表示上传文件名的识别码 fileName 1 fileName CString pbuf1 pbuf1 Format pbuf fileName 1 fileName pbuf char fName1 LPSTR LPCTSTR fileName strcat fName1 pbuf 此语句有问题 MessageBox fileName MessageBox fName1 newFile Close if nBytesRead 0 if send m sock fName1 strlen fName1 1 0 SOCKET ERROR if send m sock fileName strlen fileName 1 0 SOCKET ERROR return 下载文件列表下载文件列表 void CFTPClientDlg OnDblclkFileList NMHDR pNMHDR LRESULT pResult TODO Add your control notification handler code here int m count m fileList GetItemCount if m count GetWind

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论