linux下多人聊天室.docx
- 文档编号:161640
- 上传时间:2022-10-04
- 格式:DOCX
- 页数:42
- 大小:404.74KB
linux下多人聊天室.docx
《linux下多人聊天室.docx》由会员分享,可在线阅读,更多相关《linux下多人聊天室.docx(42页珍藏版)》请在冰豆网上搜索。
苏嵌教育
一网情深聊天室设计与实现
南京工程学院
嵌入式系统开发课程设计
专 业:
计算机科学与技术(嵌入式)
班 级:
计算机091
学 号:
202090134 姓 名:
陈之魁 设计题目:
局域网多人聊天室 开发日期:
2012.12.3-2012.12.28
2012年12
42
目录
1.绪论 4
1.1研究背景 4
1.2LINUX介绍 4
2.需求分析 6
2.1功能需求:
6
3.应用技术 7
3.1TCP和UDP通信的概念 7
3.1.1UDP通信 7
3.1.2TCP通信 7
3.2客户/服务器模型 8
3.3网络套接字(SOCKET)的概念 9
3.4多线程的概念 10
4.工作原理 11
4.1LINUX提供的有关SOCKET的系统调用 11
4.2实验过程说明(使用TCP/IP) 13
5.系统设计 14
6.详细设计与实现 15
6.1主要功能实现如下 15
6.1.1登陆模块 15
6.1.2查看在线用户 16
6.1.3私聊模块 16
6.1.4群聊信息 16
7.主要代码 17
7.1COMMON.H 所有服务器的头文件及出现的函数 17
7.2SEVER.C 18
7.3CLIENT.C 24
7.4MAKEFILE 服务器函数的编译命令 29
8.实验结果 29
8.1登录 29
8.2私聊 30
8.3群聊 31
8.4显示在线用户列表 32
9.总结 33
易嵌教育•南京分中心
1.绪论
1.1研究背景
在网络无所不在的今天,在Internet上,有ICQ、MSN、Gtalk、OICQ等网络聊天软件,极大程度上方便了处于在世界各地的友人之间的相互联系,也使世界好像一下子缩小了,不管你在哪里,只要你上了网,打开这些软件,就可以给你的朋友发送信息,不管对方是否也同时在线,只要知道他有号码。
Linux 操作系统作为一个开源的操作系统被越来越多的人所应用,它的好处在于操作系统源代码的公开化!
只要是基于GNU公约的软件你都可以任意使用并修改它的源代码。
但对很多习惯于Windows操作系统的人来说,Linux的操作不够人性化、交互界面不够美观,这给Linux操作系统的普及带来了很
大的阻碍。
因此制作一个Linux操作系统下的拥有人性化界面的实时通讯工具,将给那些刚刚接触Linux操作系统的用户带来极大的方便,而且通过设计这样的一个应用程序还能更好的学习网络编程知识和掌握LINUX平台上应用程序
设计开发的过程,将大学四年所学知识综合运用,以达到检验学习成果的目的
1.2linux介绍
Linux是一种针对PC计算机和工作站的操作系统,它具有像Windows
和Mac那样的功能齐全的图形用户界面(GUI,GraphicalUserInterface)。
Linus
Torvald和其它的遍布世界各地的编程人员共同开发的。
作为一种操作系统,它具有与Unix,Mac,Windows和WindowsNT同样的功能。
提到Linux我们不能不提GNU和Unix。
Richard M.Stallman建立的自由软件联盟出版了两种许可证,GNU通用公共许可证(GNUGneralPublicLicense,GPL)和
GNU函数库通用公共许可证(GNULibraryGneralPublicLicense,LGPL)。
大部分
GNU工程的软件和文档是以GNU通用公共许可证发行的,但是有一些库是以
GNU函数库通用公共许可证发行的。
按照GNU通用公共许可证的规定,Linux的源代码可以自由获取,这满足了我们学习该系统的强烈愿望。
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年,Linux已经升级到1.0版本。
它的源代码量也呈指数形式增长,实现了基本的TCP/IP功能,此时Linux已经拥有大约10万的用户。
(2)Linux的今天
作为一各服务器级的操作系统,Linux已经成熟了。
现在的Linux内核由150多行代码组成,能作为Web服务器平台,也为越来越多的商业用户提供文件和打印服务。
它既被当作邮件服务器的一种候选平台,也被当作一种强壮而安全的防
火墙。
Linux的企业级特性,比如支持多处理器、支持大型文件系统、日志文件系统以及密集型计算和高可用性集群技术,也逐步成熟。
桌面上的Linux也在继续完善。
KDE桌面提供的图形用户界面在易用性和可配置方面都能和微软的Windows相媲美。
(3)Linux的明天
Linux最强大的生命力在于其公开的开发过程。
每个人都有可以自由获取内核源程序,每个人都有要不得以运载源程序加以修改,而后他人也可以自由获取你修改后的源程序。
Linux这种独特的自由流畅的开发模型已被命名为
bazaar(集市模型)。
Bazaar开发模型通过重视实验,征集并充分利用早期的反馈,对巨大数量的脑力资源进行平衡配置,可以开发出更优秀的软件。
本联盟就是想通过bazaar开发模型,在网上召集一些Linux的爱好者,开发出更优秀的操作系统或软件。
2.需求分析
2.1功能需求:
项目基本功能:
1.用户注册
2.用户登录
3.不能重复登录
4.显示在线用户
5.私聊
6.群聊
7.创建管理员
8.管理员踢出用户
9.管理员禁言用户
10.传递文件
用户登录
用户输入用户名和密码,提交给服务器确认,根据确认的信息判断用户是否符合登录条件。
如果用户名和密码正确的话,则登录到聊天界面;如果还没有账号,可以先进行注册,然后便可进入聊天室。
用户注册
用户在还没有账号的情况下,先进入到注册界面,填写完完整的姓名及密码信息后便可获得账号,随后就可进入到聊天室。
用户查看在线用户
用户进入聊天室后可按查看在线用户按键即可查看当前有哪些用户在线
用户私聊
用户成功进入聊天室后可选择与在线的任一非自己用户进行私聊,选择私聊选项,输入对方姓名后即可输入私聊内容,对方即可看到
用户群聊
用户成功进入到聊天界面后可以和所有进入到聊天界面的用户进行公共聊天,此时聊天的内容每一个用户都可以看到。
管理员用户功能
踢出用户
管理员可以选择把在线的任一非自己用户踢出聊天室
禁言用户
管理员可以选择让在线的任一非自己用户只能接收信息而不能私聊、群聊
退出
用户选择退出选项即可退出聊天室
3.应用技术
3.1TCP和UDP通信的概念
3.1.1UDP通信
UDP是用户数据报协议的简称。
它是以中午连接的逻辑通信信道。
UDP在传送数据之前不需要先建立连接,远地主机的传输层在收到udp数据报后,不需要给出任何确认,所以不能保证其交付时可靠。
它的特点是:
因无连接,故提供的是不可靠的信道,但也是因无连接而具有很好的传输效率。
3.1.2TCP通信
TCP是传输控制协议的简称,它是提供一条全双工的、可靠的信道。
TCP提供面向连接的服务,在传送数据之前必须先建立连接,数据传送结束后要释放连接。
TCP不提供广播和多播服务。
由于TCP要提供可靠的、面向连接的运输服务,所以不可避免地增加了许多系统开销,比如确认、流量控制、计时器以及连接管理等都需要占用许多系统的时空资源。
两个计算机之间如果使用TCP通信,其连接过程需要三次握手实现,如实验图1-1所示。
图1-1用三次握手建立TCP连接
对于两个计算机之间连接的释放过程也需要类似的3次握手的互相确认的过程,如实验图1-2所示。
图1-2TCP连接的释放过程
3.2客户/服务器模型
在客户/服务器模型中,多个相互通信的计算机都作为客户端,与网络服务器进行连接,并通过服务器进行信息的传递。
所以多个客户端之间的通信就变为了客户端与服务端的通信。
所以,采用客户/服务器模型进行网络聊天需要分别编写服务器端和客户端的程序,服务器和客户端之间相互通信的同步关系和各自的程序流程如实验图1-3所示。
Tcp服务器
Socket()
Bind()
Tcp客户端
Listen()
Socket()
建立连接
Connect()
Accept()
请求数据
阻塞直到有客户端连接
Write()
Read()
处理请求
回应数据
Read()
Write()
Close()
Close()
Read()
结束连接
图1-3Socket通信流程图
3.3网络套接字(socket)的概念
Socket接口上TCP/IP网络应用程序接口(API),它提供了许多函数和例程,程序员可以使用它们来开发TCP/IP网络应用程序。
使用Socket接口进行网络通信的过程如图1-3所示,简要步骤如下:
(1)建立一个Socket.
(2)按要求配置socket,将socket连接到远程主机或给socket指定以各本地
协议端口。
(3)按要求通过socket发送和接受数据。
(4)关闭此socket。
这是通过Socket实现点对点通信需要掌握的4个编程要点。
3.4多线程的概念
上述点对点通信的实现知识完成了主机进程与服务器进程之间的连接,建立连接的进程之间是一对一的联系,即主机的一个进程与服务器的一个进程之间建立
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linux 下多人 聊天室