linux下基于socket的文件传输程序设计课程设计报告内容摘要:

程,程序员可以用它们来开发 TCP/IP 网络上的应用程序。 要学Inter 上的 TCP/IP网络编程,必须理解 Socket 接口。 关键字 : Socket、文件传输 、多线程 2 2 第一章 课程设计要求 题目名称 : Linux 下基于 socket 的文件传输程序设计 题目类型 : 设计型 课程设计目的 : 实现文件的上传、下载 和管理,了解 socket 编程知识 已知参数和设计要求: 系统分为客户端和服务器端,客服端可以实现文件的上传、下载以及查看服务器下默认目录的文件列表;服务器端可以对文件进行管理,包括上传,下载, 删除文件,重命名等; 实验内容 : 编程实现上述功能。 在内核中添加一 个自己的内存分配和释放的系统调用(可以调用 malloc()和 free()等内存管理函数实现),并在程序中调用; 支持多个客户端同时对服务器中的文件进行操作(多线程); 3 3 第二章 设计概要 功能设计 本项目是为了实现在 Linux 下基于 Socket 进行文件传输的功能。 项目的分析及设计要求如下: 1)整个系统中分为服务器端( Server)和客户端( Client) 2)服务器 端可以对文件进行管理,包括上传,下载,删除文件,重命名等 3) 客服端可以实现文件的上传、下载以及查看服务器下默认目录的文件列 表 4)在程序中应用多线程来实现多个客户端同时对一个服务器端进行请求操作 程序系统功能模块 图 服务器 客户端 接收 client 命令 文件管理 连接服务器 文件传输 列表查看 退出 附加功能 文件传输系统 4 4 功能分析 功能流程图: 图 Server 端 创建 ServerSocket 对象,在某端口提供监听服务 Client 端 等待来自 Client 端的服务请求 接受 Client 端的请求,用返回的 Socket 建立连接 通过向 Socket 中读写数据来与 Client 端通信 关闭 Socket,结束与 Server端的通信 通过向新的 Socket 中读写数据来与 Server 端通信 创建 Socket对象,向 Server的监听端口请求 关闭 Socket,结束与当前Client 的通信,等待其他请求 关闭 ServerSocket 对象,结束监听服务 建立连接 数据通信 拆分连接 5 5 系统操作界面 Server: Client: 6 6 程序主要功能说明 主要功能实现代码如下: : if(fork()==0){ //fork()实现多线程 while(1){ if((read_size=recv(connfd, buf, N, 0))==1) { //perror(recv error.)。 exit(1)。 } if(!strcmp(buf, end)) { break。 } switch (buf[0]) { case 39。 L39。 : ProcessList(connfd)。 printf(打印 list!\n)。 break。 case 39。 G39。 : 7 7 ProcessGet(connfd, buf)。 printf(执行下载命令 !\n)。 break。 case 39。 P39。 : ProcessPut(connfd, buf)。 printf(执行上传命令 !\n)。 break。 } close(connfd)。 //关闭与客户端的连接 } exit(0)。 } else close(connfd)。 //关闭与客户端的连接 } : void ProcessList(int connfd) //目录列表打印,值返回给 client { char buf[N]。 DIR *mydir。 struct dirent *myitem。 mydir = opendir(.)。 while ((myitem = readdir(mydir)) != NULL) { if ((strcmp(myitemd_name, .) == 0) || (strcmp(myitemd_name, ..) == 0)) continue。 strcpy(buf, myitemd_name)。 send(connfd, buf, N, 0)。 } closedir(mydir)。 return。 } : void ProcessGet(int connfd, char buf[]) //client 下载函数,返回 client 请求的文件 { int fd, nbyte。 if ((fd = open(buf+1, O_RDONLY)) 0。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。