基于Linux的多进程网络通信

上传人:我*** 文档编号:132540329 上传时间:2020-05-17 格式:DOCX 页数:24 大小:786.59KB
返回 下载 相关 举报
基于Linux的多进程网络通信_第1页
第1页 / 共24页
基于Linux的多进程网络通信_第2页
第2页 / 共24页
基于Linux的多进程网络通信_第3页
第3页 / 共24页
基于Linux的多进程网络通信_第4页
第4页 / 共24页
基于Linux的多进程网络通信_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《基于Linux的多进程网络通信》由会员分享,可在线阅读,更多相关《基于Linux的多进程网络通信(24页珍藏版)》请在金锄头文库上搜索。

1、信息工程学院嵌入式系统设计课程设计报告题目:基于linux系统移植的多进程通信学号:-学生姓名:-专业名称:计算机科学与技术班级:-目录一、课程研究意义及现状31.1课题研究意义31.2课题研究现状3二、系统总体方案设计及功能模块介绍42.1 系统概述及总体方案设计42.2功能模块介绍4三、系统软件设计与实现53.1主程序设计与实现53.3文件上传程序设计与实现83.4文件下载程序设计与实现93.5多进程简易聊天设计与实现10四、系统测试124.1系统软件测试124.1.1文件上传测试124.1.2文件下载测试134.1.3多进程简易聊天144.2系统硬件测试14五、总结和展望16六、参考文献

2、17七、源代码18一、课程研究意义及现状1.1课题研究意义Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统1.2课题研究现状在网络无所不在的今天,在Internet上,有Facebook、微信、Twitter、QQ等网络聊天软件,极大程度上方便了处于在世界各地的友人之间的相互联系,也使世界好像一下子缩小了,不管你在哪里,只要你上了网,打开这些软件,就

3、可以给你的朋友发送信息,不管对方是否也同时在线,只要知道他有号码。Linux 操作系统作为一个开源的操作系统被越来越多的人所应用,它的好处在于操作系统源代码的公开化!只要是基于GNU公约的软件你都可以任意使用并修改它的源代码。但对很多习惯于Windows操作系统的人来说,Linux的操作不够人性化、交互界面不够美观,这给Linux操作系统的普及带来了很大的阻碍。因此制作一个Linux 操作系统下的简易聊天程序,通过设计这样的一个应用程序还能更好的学习网络编程知识和掌握Linux平台上应用程序设计开发的过程,将大学三年所学知识综合运用,以达到检验学习成果的目的。二、系统总体方案设计及功能模块介绍

4、2.1 系统概述及总体方案设计这次程序设计的目标是在以Linux为内核的操作系统下,实现多线程文件传输系统功能模块。系统模块分为服务器和客户端两部分,客户端实现对文件的上传、下载和查看服务器默认路径下的文件列表;服务器可以对文件进行管理操作,包括创建、删除和重命名等。多线程文件传输是一种一对多或者多对多的关系,一般是一个服务器对应着多个客户端。客户端通过socket连接服务器,服务器要为客户端创建一个单独进程(线程)监听每个客户端的请求。创建好连接之后文件就可以通过流的形式传输。linux内核中为我们提供了两种不同形式的读写流,包括read()、write()和send()、recv()。客户

5、机对文件的查看指令也是通过流传递给服务器,服务器根据请求类型返回不同相应流。 根据socket原理和特点绘画出链接流程图,将客户机与服务器的相互通信划分为不同的模块,每个模块负责独立的功能项。服务器输入指令管理目录下的文件,touch是创建文件命令,rm是删除文件命令;客户端向服务器发送上传、下载和查看请求,从而得到不同的相应,包括将文件下载到当前路径下,从当前路径下上传文件给服务器,列出服务器的文件列表。图1-系统功能图2.2功能模块介绍文件上传功能:支持从客户端到服务器的文件传输。文件下载功能:支持从服务器到客户端的文件传输。会话功能:支持服务器到客户端一对多会话通讯。三、系统软件设计与实

6、现3.1主程序设计与实现图2-主程序原理图服务器端部分代码: struct sockaddr_in servAddr; bzero(&servAddr, sizeof(servAddr); servAddr.sin_family = PF_INET; servAddr.sin_port = htons(8888); servAddr.sin_addr.s_addr = inet_addr(192.168.100.200); /socket int servFd = socket(PF_INET, SOCK_STREAM, 0); if(-1 = servFd) perror(socket er

7、ror!); return -1; printf(socket ok!n); /bind int ret = bind(servFd, (struct sockaddr *)&servAddr, sizeof(servAddr); if(-1 = ret) perror(bind error!); close(servFd); return -1; printf(bind ok!n); /listen ret = listen(servFd, 10); if(-1 = ret) perror(listen error!); close(servFd); return -1; printf(li

8、sten ok!n);char a; while(1) /accept int connFd = accept(servFd, NULL, NULL); if(-1 = connFd) perror(accept error!); close(servFd); return -1; printf(accpet ok!n);客户端部分代码:struct sockaddr_in servAddr; bzero(&servAddr, sizeof(servAddr); servAddr.sin_family = PF_INET; servAddr.sin_port = htons(8888); se

9、rvAddr.sin_addr.s_addr = inet_addr(192.168.100.200); /socket int cliFd = socket(PF_INET, SOCK_STREAM, 0); if(-1 = cliFd) perror(socket error!); return -1; printf(socket ok!n); /connect int ret = connect(cliFd, (struct sockaddr *)&servAddr, sizeof(servAddr); if(-1 = ret) perror(connect error!); close

10、(cliFd); return -1; printf(connect ok!n);3.3文件上传程序设计与实现图3-文件上传模块原理图文件上传服务器端部分代码:int fd = open(/home/linux/yx/server/fileRV.txt,O_WRONLY |O_CREAT,0666);while(1) bzero(buf, sizeof(buf); ret = recv(connFd, buf, sizeof(buf), 0); if(0 = ret) break; printf(recv from client:%sn, buf); int wr = write(fd,buf

11、,ret); if(-1 = wr) perror(wr error!);close(wr);return -1; printf(Write OK!); exit(0);文件上传客户端部分代码:int fd = open (/home/linux/yx/client/file.txt,O_RDONLY,0666);while(1)bzero(buf, sizeof(buf);int rd = read(fd,buf,4096);if(0 = rd)printf(upload ok!n);break;send(cliFd, buf, rd, 0);3.4文件下载程序设计与实现图4-文件下载模块原

12、理图文件下载服务器端代码与文件上传的客户端代码原理相同,此处略。文件下载客户端代码与文件上传的服务器端代码原理相同,此处略。3.5多进程简易聊天设计与实现图5 简易聊天模块原理图简易聊天服务器端部分代码:while(1)bzero(buf, sizeof(buf);ret = recv(connFd, buf, sizeof(buf), 0);if(0 = ret)printf(client shutdown!n);close(connFd);exit(0);printf(recv from client:%sn, buf);bzero(buf, sizeof(buf);printf(serv

13、er:);gets(buf);send(connFd, buf, sizeof(buf), 0);简易聊天客户端部分代码:while(1)bzero(buf, sizeof(buf);printf(client:);gets(buf);if(0 = strcmp(buf, quit)break;send(cliFd, buf, sizeof(buf), 0);bzero(buf, sizeof(buf);recv(cliFd, buf, sizeof(buf), 0);printf(from server: %sn, buf);四、系统测试4.1系统软件测试4.1.1文件上传测试图6-文件上传测试(1)图7-文件上传测试(2)图8-文件上传测试(3)4.1.2文件下载测试图9-文件下载(1)

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

当前位置:首页 > 办公文档 > 事务文书

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