基于linux网络聊天室的设计.docx
- 文档编号:446352
- 上传时间:2022-10-10
- 格式:DOCX
- 页数:21
- 大小:142.61KB
基于linux网络聊天室的设计.docx
《基于linux网络聊天室的设计.docx》由会员分享,可在线阅读,更多相关《基于linux网络聊天室的设计.docx(21页珍藏版)》请在冰豆网上搜索。
基于linux网络聊天室的设计
《Linux操作系统》课程设计报告
学院工商学院
专业计算机科学与技术
班级计1341学生姓名:
王慢,韩霞,孙洁茹,李强,蒋涛
课程设计任务书
题目基于linux网络聊天室的设计
实验目的:
《Linux操作系统课程设计B»是一门在课程《Linux操作系统与程序设计B》后独立开设的实验课程。
这一门实验课程的开设目的是为了通过学生独立完成一个基于Linux平台的较大型应用程序,巩固课堂上学到的Linux平台上的编程规范、技术和技巧,培养学生的编写较大型程序的能力和提高学生综合应用素质。
本课程设计实验主要围绕Linux平台上主流的基础技术展开,这些技术包括:
Linux的进程、线程通信和同步技术;socket网络通信技术等,这些技术可以集中体现并应用在并发程序设计中。
通过并发程序的设计与开发,培养学生底层软件开发的能力,并为将来从事UNIX/Linux平台开发、嵌入式开发等相对高端的软件开发工作打下基础。
课程设计的具体内容与要求:
1.阅读(一个)示例代码,理解并发程序设计并掌握基于Linux平台并发程序设计的方法。
2.在充分理解示例程序的基础上,重新定义和完善程序的功能,定义数据结构,划分程序的功能模块和接口,明确每个模块功能以及相互关系。
3.完成程序的详细设计和编码,并测试。
4.书写并提交文档
1引言.1
1.1课程设计背景.1
1.2课程设计目的.2
1.3课程设计内容.4
2技术介绍7
2.1TCP和UDP介绍
2.2客户/服务器模型
2.3网络套接字(socket)的概念
2.4多线程的概念
3系统设计10
3.1系统结构设计
3.2通信模块设计
4模块实现12
4.1系统调用相关函数
4.2系统实现过程说明
5运行效果15
结束语
参考文献18
附录19-24
基于linux网络聊天室的设计
摘要本课程设计主要实现一个Linux下的局域网聊天工具的设计。
该设计主要分为两部分,客户端部分和主机部分。
运行服务器端程序可以和任意运行了客户端程序的主机进行通信,通信内容能够通过终端显示出来。
两个部分都使用C语言,利用vi编辑器,通过Berkeley套接口编程实现相关功能。
1引言
1.1课程设计背景
Linux是一种针对PC计算机和工作站的操作系统,它具有像Windows和Mac那样的功能齐全的图形用户界面(GUI,GraphicalUserInterface)。
LinusTorvald和其它的遍布世界各地的编程人员共同开发的[1]。
提到Linux我们不能不提GNU和Unix。
RichardM.Stallman建立的自由软件联盟出版了两种许可证,GNU通用公共许可证(GNUGneralPublicLicense,GPL)和GNU函数库通用公共许可证(GNULibraryGneralPublicLicense,LGPL)。
大部分GNUT程的软件和文档
是以GNU通用公共许可证发行的,但是有一些库是以GNU函数库通用公共许可证发行的。
按照GNU!
用公共许可证的规定丄inux的源代码可以自由获取,这满足了我们学习该系统的强烈愿望。
GPL充分体现了Stallman的思想:
只要用户所做的修改是同等自由的,用户可以自由地使用、拷贝、查询、重用、修改甚至发布这个软件。
通过这种方式,GPL保证了
Linux(以及同一许可证下的大量其他软件)不仅现在自由可用,而且皮后经过任何修改这后都仍然可以自由使用。
Unix是由AT—T贝尔实验室的KenThompson和DennisRitchie于1969年在一台已经废弃了的PDP-7上开发的;最初它是一个用汇编语言写成的单用户操作系统。
后来,他们
又在PDP-11上用C语言重新编写(发明C语言的部分目的就在于此),把Unix做成为了一个文本处理系统,这使Unix在贝尔实验室得到广泛的应用。
Unix的最初版本免费提供给许多知名的大学的计算机系使用。
加州大学伯克利分校的计算机系就是其中的一名,并地Unix进行了修改增加了许多新的特点,这就是主为人知的BSC版本的Unix。
与此同时,其它独立开发的Unix版本也开始萌生。
Unix不断发展了,各种版本被应用到不同的计算机使用。
而Linux最初是专门为基于Intel的个人计算机设计的。
(1)Linux的昨天
1991年,一名叫LinusTorvalds的芬兰大学生对Unix各种版本对于80386类的机器的脆弱支持十分不满,他决定要开发出一个全功能的、支持POSIX标准的、类Unix的操作系统内核,该系统吸收了BSD和SystemV的优点,同进摒弃了它们的缺点。
他独立把这个内核开发到0.02版,这个版本已经可以运行gcc、bash和很少的一些应用程序。
后来,他又开始了在因特网上寻求广泛的帮助。
1994年丄inux已经升级到1.0版本。
它的源代码量
也呈指数形式增长,实现了基本的TCP/IP功能,此时Linux已经拥有大约10万的用户。
(2)Linux的今天
作为一各服务器级的操作系统,Linux已经成熟了。
现在的Linux内核由150多行代码组成,能作为Web服务器平台,也为越来越多的商业用户提供文件和打印服务。
它既被当作邮件服务器的一种候选平台,也被当作一种强壮而安全的防火墙。
Linux的企业级特性,比如支持多处理器、支持大型文件系统、日志文件系统以及密集型计算和高可用性集群技术,也逐步成熟。
桌面上的Linux也在继续完善。
KDE桌面提供的图形用户界面在易用性和可配置方面都能和微软的Windows相媲美。
(3)Linux的明天
Linux最强大的生命力在于其公开的开发过程。
每个人都有可以自由获取内核源程序,每个人都有要不得以运载源程序加以修改,而后他人也可以自由获取你修改后的源程序。
Linux这种独特的自由流畅的开发模型已被命名为bazaar(集市模型)。
Bazaar开发模型通过重视实验,征集并充分利用早期的反馈,对巨大数量的脑力资源进行平衡配置,可以开发出更优秀的软件。
本联盟就是想通过bazaar开发模型,在网上召集一些Linux的爱好者,开发出更优秀的操作系统或软件。
1.2课程设计目的
本课程设计主要实现一个Linux下的局域网聊天工具的设计。
该设计主要分为两部分,客户端部分和主机部分。
运行服务器端程序可以和任意运行了客户端程序的主机进行通信,通信内容能够通过终端显示出来。
两个部分都使用C语言,利用vi编辑器,通过Berkeley套接口编程实现相关功能。
要求:
(1)主要实现一个Linux下的局域网聊天工具的设计,进一步掌握vi,gcc等工具的使
用,并且熟悉Linux下的网络编程,以及多线程编程。
(2)通过实际项目的分析、安装、配置、测试等工作,掌握用Linux系统下的网络聊天
室的应用
1.3课程设计内容
本课程设计主要实现一个Linux下的局域网聊天工具的设计。
该设计主要分为两部分,客户端部分和主机部分。
运行服务器端程序可以和任意运行了客户端程序的主机进行通信,通信内容能够通过终端显示出来。
两个部分都使用C语言,利用vi编辑器,通过Berkeley套接口编程实现相关功能。
2技术介绍
客门端
①发送TCP冷N分段
(srcj-100ct1-100)
SYNReceived
2.1TCP禾口UDP介绍
⑴UDP通信
UDP是用户数据报协议的简称。
它是以中午连接的逻辑通信信道。
UDP在传送数据之前
不需要先建立连接,远地主机的传输层在收到udp数据报后,不需要给出任何确认,所以不能保证其交付时可靠。
它的特点是:
因无连接,故提供的是不可靠的信道,但也是因无连接而具有很好的传输效率。
(2)TCP通信
TCP是传输控制协议的简称,它是提供一条全双工的、可靠的信道。
TCP提供面向连接
的服务,在传送数据之前必须先建立连接,数据传送结束后要释放连接。
由于TCP要提供可靠的、面向连接的运输服务,所以不可避免地增加了许多系统开销,比如确认、流量控制、计时器以及连接管理等都需要占用许多系统的时空资源。
两个计算
机之间如果使用TCP通信,其连接过程需要三次握手实现,如实验图2-1所示。
卞机R嘔务器端
SYNReceived
②发送TCPMX片段(seq300ack-101ctl_syn7ack)
③Established
(seq=101ack=301ctl=ack)
图2.1用三次握手建立TCP连接
对于两个计算机之间连接的释放过程也需要类似的3次握手的互相确认的过程,如实验图
2-2所示。
客户
H1N=1.ACK=0,SI-y=2500
服务器
边程
ACK=1.SEQ^OOO.AV=2501
FIN-ltSEQ=6Q0LAN=2501
SH 图2.2TCP连接的释放过程 2.2客户/服务器模型 在客户/服务器模型中,多个相互通信的计算机都作为客户端,与网络服务器进行连接,并通过服务器进行信息的传递⑻。 所以多个客户端之间的通信就变为了客户端与服务端的通信。 所以,采用客户/服务器模型进行网络聊天需要分别编写服务器端和客户端的程序,服务器和客户端之间相互通信的同步关系和各自的程序流程如实验图2-3所示。 图2.3Socket通信流程图 2.3网络套接字(socket)的概念 Socket接口上TCP/IP网络应用程序接口(API),它提供了许多函数和例程,程序员可以使用它们来开发TCP/IP网络应用程序。 使用Socket接口进行网络通信的过程如图1-3所示,简要步骤如下: (1)建立一个Socket. (2)按要求配置socket,将socket连接到远程主机或给socket指定以各本地协议端口。 (3)按要求通过socket发送和接受数据。 ⑷关闭此socket。 这是通过Socket实现点对点通信需要掌握的4个编程要点。 2.4多线程的概念 上述点对点通信的实现知识完成了主机进程与服务器进程之间的连接,建立连接的进程之间是一对一的联系,即主机的一个进程与服务器的一个进程之间建立的连接。 而每个进程进行通信的环节都包括了发送信息和接口信息两个任务,这两个任务通过一个端口地址发送和接收。 对于多个并发的任务需要创建多个线程或线程去实现。 使用一个进程去完成发送信息是没有问题的,因为发送总是主动的;而使用同一个进程再去完成接受信息去不一定会成功,因为接受信息是被动的,所以当没有信息可以接收时,该进程就会被阻塞,从而导致发送任务也一起被阻塞。 同一个端口的发送和接收是两个并发任务,应该由两个不同的任务去分别完成信息的发送和接收。 这样,当接收信息任务因没有信息而被阻塞时,不至于影响发送任务的执行。 那么,发送和接收两个任务是使用两个进程还是两个进程去完成呢? 在网络通信中,端口地址是以进程为单位进程分配的,而一个进程与外界的消息发送与接收必须通过分配给它的同一个端口进行。 因此,不能通过创建进程方式来解决上
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 linux 网络 聊天室 设计