"景先生毕设|www.jxszl.com

基于linux系统下的局域网通信软件【字数:10471】

2023-11-13 21:50编辑: www.jxszl.com景先生毕设
摘 要本次毕业设计主要实现一个Linux下的局域网聊天工具的设计。该设计主要分为两部分,客户端部分和服务器部分。所有运行了客户端程序的主机可以与运行服务器端程序进行通信,通信内容可以Linux系统终端显示出来。系统通过socket套接字编程实现服务器和客户端之间的信息机交互两个部分都使用C语言编写,代码利用vi编辑器编辑。
目录
1. 引 言 1
1.1 Linux简介 1
2. 系统概述 2
3. 技术介绍 3
3.1 TCP和UDP介绍 3
3.1.1 UDP通信 3
3.1.2 TCP通信 3
3.2客户/服务器模型 4
3.3网络套接字socket的概念 5
3.4多线程的概念 6
3.5链表的概念 6
4. 需求分析 9
4.1 功能需求 9
4.2 性能需求 9
4.3运行环境要求 10
5. 系统设计 11
5.1 系统总体流程图 11
5.2系统模块设计 12
5.2.1 用户登录注册模块 12
5.2.2 查看在线用户模块 13
5.2.3 添加好友模块 14
5.2.4 私聊模块 15
5.2.5 建群模块 16
5.2.6 加群模块 17
5.2.7 群聊模块 18
5.2.8修改密码模块 19
5.2.9禁言模块 20
5.2.10踢人模块 21
6. 调试及测试 22
6.1调试结果 22
6.2 调试结果分析 28
7. 设计总结 29
8.参考文献 30
1. 引 言
1.1 Linux简介
Linux操作系统是针对PC计算机和工作站的操作系统[1],它具有像Windows和Mac那样的功能齐全的图形用户界面。它是由Linus Torvald和其他的世界各地的编程人员共同研发的。
Linux与GNU计划密不可分。 *景先生毕设|www.jxszl.com +Q: @351916072
GNU是Richard Stallman在1984年创立,它的目标是创造一个真正免费的自由软件——一种类UNIX计算机操作系统以及运行在其上的软件开发工具和各种应用程序。事实上,GNU自己的操作系统内核并没用真正的开发出来,但是大量GNU软件与Linux操作系统完美融合在一起。而Linux系统由芬兰人Linus Torvalds最早开发,并且linux系统第一次正式公布时间是1991年10月5日。
linux操作系统是开源代码程序软件,程序员可以根据自己的需要和习惯进行自由修改,他与UNIX系统兼容,并且具有所有的UNIX操作系统的优良特性,他是一个完善的系统,支持多用户,多任务,多进程,多CPU等,并且有很完善的网络服务支持,例如http、ftp,pop等他网络协议他都支持,他有完善的大型数据库台,有完善的图形用户界面;有完善的开发平台;由于linux是开放源代码的,所以它的代码全世界的程序员都能看到,一旦他系统出现什么漏洞,很快就会被发现,所以它的系统既具有很高的稳定性和安全性;linux系统还具有良好的可移植性,他在嵌入式领域等到广泛的运用;linux系统受到广大的程序员的喜爱。
2. 系统概述
本次软件的开发在Ubuntu操作系统中完成,全部使用C语言编程并且采用gcc编译,总体框架采用客户端与服务器的架构,在实际操作中,整个系统的大致的运行过程是服务器端的主线程循环等待客户端的连接请求,一旦收到客户端的连接请求,服务器立刻接收这个请求并且开启一个子线程处理这个请求,调用相应的相应函数处理事件,然后将处理后信息再发送给客户端,客户端主线程循环接收来自服务器的响应,一旦接收到来自服务器的处理信息后调用对应的函数处理接收到信息,并在客户端终端界面上显示出来,然后客户端等待用户的下一步操作。服务器端在同时处理很多用户的请求时,通常才用多线程的处理方式,采用这种方式可以有效的提升服务器的处理请求的效率。当然在客户端也是一样的,用户可以进行许多操作,通过socket发送大服务器进行处理,收到服务器的回复后开启多个子线程对这些响应或用户操作进行处理。
服务器部分由smain.c、server.c组成(包括创建socket,监听listen,连接bind,处理请求函数等),客户端由cmain.c、client.c组成(包括创建socket,监听listen,连接bind,请求函数等),通信协议则封装在protocol.c中,由于我将所有的注册用户信息和群组成员信息存入了usr.info、group.info两个文件中,所以编译过程中还用到了文件操作,相关的文件操作所需的函数封装在file.c文件中。
3. 技术介绍
3.1 TCP和UDP介绍
3.1.1 UDP通信
UDP(面向非连接)他在通讯前不需要和对方建立连接[2],也不管对方是什么状态都回发送消息出去,它在传递数据时非常快并且被攻击者利用的漏洞也很少,但是他有个很大的缺点就是一次通讯可传输的数据太少而且非常的不可靠、不稳定,因为UDP没有像TCP一样的可靠机制,所以他在数据传递时,一旦网络质量不好,就很容易丢包。
3.1.2 TCP通信
TCP(面向连接)的可靠体现在TCP在传递数据之前必须要建立连接[3],并且是通过三次“对话”来建立连接,而且在数据传递时,有几种控制机制确认连接双方的意愿,在数据传完后,还会断开连接用来节约系统资源,并且TCP在传输时可携带的数据量很大,而且传输过程可靠,数据不容易丢失错乱。
但TCP同样有缺点,比如说他的传输速度慢,传输效率低,漏洞较多容易遭受攻击,并且它占用的系统资源高[4],还有就是使用TCP在传递数据之前,首先要建立连接,这会浪费不少时间,同样在数据传递时,TCP所具有的各种机制同样消耗大量的时间,并且要在每台设备上维护所有的传输连接,而且每个连接都会占用系统的CPU、内存等硬件资源。
若两个计算机之间用TCP进行通信,他们的连接过程需要由三次握手实现,如图31所示。

原文链接:http://www.jxszl.com/dzxx/gdxx/467904.html