您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > _基于Linux系统移植的简易聊天
信息工程学院嵌入式系统设计课程设计报告题目:基于Linux系统移植的简易聊天学号:学生姓名:专业名称:班级:目录1.课题研究意义和现状..........................................................................................-1-1.1课题研究意义....................................................................................................-1-1.2课题研究现状....................................................................................................-1-2.系统总体方案设计..............................................................................................-2-2系统总体结构........................................................................................................-3-3.系统软件设计与实现..........................................................................................-4-3.1系统总流程图.............................................................................................-4-3.2客户端程序设计与实现.............................................................................-5-3.3服务器程序设计与实现.............................................................................-7-4.系统测试..............................................................................................................-9-4.1系统软件测试...........................................................................................-10-4.2系统硬件测试...........................................................................................-11-5.总结和展望........................................................................................................-12-6.参考文献............................................................................................................-13-信息工程学院1.课题研究意义和现状1.1课题研究意义随着嵌入式在生活中的应用越来越广泛,嵌入式LINUX下的socket网络编程也越来越热门。为了加强对Linux系统下的编程的各种知识点的整合与灵活应用,让我们更加熟悉linux下的编程操作,我们选择了Linux下简单聊天作为课设题目。随着互联网技术的发展,互联网应用越来越丰富。人们的联系方式也变得越来越多样化。譬如在Internet上,有QQ、MSN、微信、微博等网络聊天软件,方便了距离相离很远是人们之间进行交流。刚开始这些软件只是为了方便人们交流而开发的一种娱乐方式,但是随着发展和市场的需求,这些工具的功能多样化使得它们在市场上带来了很多的经济利益,因而使得聊天功能越来越强大。作为一名即将毕业的大学生,可以通过这次的论文设计,巩固自己的C语言和数据结构知识,以及熟悉一个新系统Linux和Linux中的命令,socket编程,网络协议等等,更重要的是锻炼了自己动手编程能力和面对问题怎样去分析和解决的能力。1.2课题研究现状随着网络的发展,通信网络成为了我们现代社会发展的重要桥梁。最近几年”云”一说法已经在人们的思想中成为一种定局,不管是有线还是无线,他们之间的网络通信将是人们很关注的问题。由于网络通信的畅通,使得人们彼此之间的通信变得快捷和方便。这是因为人类的需求,国内外出现了很多的聊天工具。比如国内的QQ和国外的MSN,以及最近很红火的微信和facebook。而对于QQ而言,它是以服务端作为中继并且接收客户端发来的信息,服务器总控制客户端,这样客户端之间就可以采用不面向连接的方式进行通信,提高效率。当客户端之间没办法连接时,才由服务器进行中转通信。在Internet网络上使用TCP/IP协议进行传输,要想客户端与客户端能进行正常的通信,他们彼此要和服务端先建立起连接,然后通过与服务器的TCP连接进行中转通信。通过这两个具有代表性的聊天工具,可以看出根据自身情况,国内和国外研究的方向是有一定区别的。由于套接字的类型还是比较多,所以在不同的操作系统中必须要有相应的套接字函数库。除此之外由于不同商家为了获利,生产出各种有竞争的产品,导致市场上出现了不同型号的pc机,并且运用了不同的操作系统,这样就对通信带来了很大的麻烦,所以提出了tcp/ip协议来解决这样的问题。信息工程学院以前几乎所有的套接字都是运用在windows系统下的,但是随着目前全球Linux系统开发的速度非常的快,使得socket套接字在linux系统中用的越来越多,其中以美国为首的发达国家最为积极。由于linux在中国是最近几年的新词,所以中国的活跃程度相对还要低很多。尽管活跃度较低,但是linux下的socket通信在各行各业中迅速成长起来。由于网络的壮大,在Internet上通过网络通信会变得越来越复杂,所以在局域网内的通信在某些环境下将更受人们欢迎。比如公司和学校的局域网通信,以及在相同局域网内的无线快速分配动态ip等。信息工程学院2.系统总体方案设计2系统总体结构系统结构图如下:图2.1聊天模块划分图主模块服务器客户端互相交流信息工程学院3.系统软件设计与实现3.1系统总流程图:图3系统总流程图开始打开服务端打开客户端客户端之间进行交流关闭交流关闭客户端关闭服务端结束信息工程学院3.2客户端程序设计与实现#includestdlib.h#includestdio.h#includeerrno.h#includestring.h#includeunistd.h#includenetdb.h#includesys/socket.h#includenetinet/in.h#includesys/types.h#includearpa/inet.h#includepthread.h#definePORT15636void*thread(void*vargp);void*threadsend(void*vargp);void*threadrecv(void*vargp);intmain(){intlistenfd=socket(AF_INET,SOCK_STREAM,0);if(listenfd0){perror(socket);exit(1);}structhostent*hp;structsockaddr_inserveraddr;bzero((char*)&serveraddr,sizeof(serveraddr));serveraddr.sin_family=AF_INET;serveraddr.sin_addr.s_addr=htonl(INADDR_ANY);serveraddr.sin_port=htons(PORT);if(bind(listenfd,(structsockaddr*)&serveraddr,sizeof(serveraddr))0){perror(connect);exit(1);}if(listen(listenfd,1024)0){perror(listenerror);exit(1);}信息工程学院//chartemp[100];structsockaddr_inclientaddr;intclientlen,*connfdp;clientlen=sizeof(clientaddr);while(1){connfdp=(int*)malloc(sizeof(int));*connfdp=accept(listenfd,(structsockaddr*)&clientaddr,&clientlen);pthread_ttid;printf(Accepted!\n);pthread_create(&tid,NULL,thread,connfdp);}EXIT_SUCCESS;}void*thread(void*vargp){pthread_ttid1,tid2;intconnfd=*((int*)vargp);intidata;chartemp[100];pthread_create(&tid1,NULL,threadsend,vargp);pthread_create(&tid2,NULL,threadrecv,vargp);returnNULL;}void*threadsend(void*vargp){intconnfd=*((int*)vargp);intidata;chartemp[100];while(1){//printf(serverinput:);fgets(temp,100,stdin);send(connfd,temp,100,0);printf(serversendOK\n);}returnNULL;}void*threadrecv(void*vargp)信息工程学院{chartemp[100];intconnfd=*((int*)vargp);while(1){intidata=0;idata=recv(connfd,temp,100,0);if(idata0){printf(client:\n%s\n,temp);}}returnNULL;}3.3服务器程序设计与实现#includestdlib.h#includestdio.h#includeerrno.h#includestring.h#includeunistd.h#includenetdb.h#includesys/socket.h#includenetinet/in.h#includesys/types.h#includearpa/inet.h#includepthread.h#defineMAXLINE100;void*threadsend(void*vargp);void*threadrecv(void*vargp);intmain(){int*clientfdp;clientfdp=(int*)malloc(sizeof(int));*clientfdp=socket(AF_INET,SOCK_STREAM,0);structsockaddr_inserveraddr;structhostent*hp;bzero((ch
本文标题:_基于Linux系统移植的简易聊天
链接地址:https://www.777doc.com/doc-4516777 .html