基于Linux的聊天室的设计与实现
2018-12-05聂维刘小豫
聂维 刘小豫
(咸阳师范学院计算机学院,陕西 咸阳 712000)
1 引言
伴随着各种各样的聊天软件的产生,人们越来越依赖聊天软件。但是目前的聊天软件还存在一些局限性。现在我们使用的聊天软件都只适用于Windows操作系统[1,2],而并不适用于Linux操作,这对使用Linux操作系统的用户造成了极大的不便。由于Linux操作系统的开源性,Linux越来越受用户和商家的喜爱[3]。所以,将Linux操作系统和通讯软件结合起来不仅加速了Linux的普及,也丰富了Linux下的应用软件。
2 需求分析
Linux下的聊天室需满足人们日常生活中基本交流的要求。对于用户来说,可以注册账号,登录系统,修改密码,查看聊天记录,为用户显示当前的在线人数,以及与某一特定的用户进行私聊,或者与众多用户进行群聊,同时满足用户与用户之间传输文件的要求。对于管理员来说,可以管理所有的用户,实现对某一用户进行踢下线的功能,并且同时可以拥有普通用户的所有权限。
3 系统设计与实现
3.1 系统功能设计
本聊天室服务的用户主要有两类:普通注册用户和管理员。
3.1.1 用户功能
普通用户首先需要在系统中注册,创建自己的用户名和登录密码,登录后才能使用本系统的其他功能,例如,修改密码,与某一用户进行私聊,与所有用户进行群聊,传输文件,或者查看当前的在线人数。根据系统需求分析,系统功能结构图如图1所示。
图1 用户功能模块图
3.1.2 管理员功能
管理员主要负责管理普通用户的信息和用户操作。管理员具有以下功能:(1)登录:管理员在对用户进行管理之前,必须先要登录系统,在登录界面输入管理员账号和密码,成功后就可以对用户进行操作了;(2)聊天;(3)传输文件:管理员对文件传输进行管理;(4)创建分组:管理员可以对用户创建不同的分组;(5)踢下线:管理员对于不遵守聊天秩序的用户,有权将该用户踢线下。
3.2 系统功能实现
系统实现主要从聊天室管理模块以及基础功能两个模块进行详细设计与实现。
3.2.1 聊天室管理模块
聊天室管理模块是由管理员进行操作的,管理员登录系统之后,可以创建聊天室分组,并且对不遵守聊天室规则的用户进行踢下线操作。
(1)创建聊天室分组操作:用户在首页点击群聊按钮后,调用public.c中的show talk_p()函数,调用private_t_p()函数创建出群聊界面,在群聊界面中的join框中输入聊天室名字,将输入的信息传入到start_talk_p()中,在该函数中向服务器端发送消息。服务器端接收消息后,进入work.c文件work()函数中,根据不同的消息类型处理信息,并调用join_room()函数,将聊天室信息传入join_room()函数中,在该函数中调用数据库插入函数join_record()向数据库中的聊天室信息表中插入聊天室信息,聊天室创建完成。
(2)管理员踢下线操作:首先在客户端首页点击下线按钮,该按钮会调用root_show()函数,在root_show函数中调用创建踢下线的界面函数root_show_p(),在此界面中输入要踢下线的用户名,并将该用户名传入该函数中,然后点击下线按钮,并调用kill_people()函数,在kill_people函数中向服务器端发送下线消息。服务器端接收到消息后,在work.c文件中根据消息类型downline调用相应的函数talk_kill_people()关闭该用户与服务器的连接。
3.2.2 基础功能模块
基础功能模块是针对普通用户进行操作的,用户登录系统后,进入首页,可以执行群聊,传输文件,私聊,查看聊天记录和传输文件等功能。
(1)私聊操作:用户在登录系统后,首页会出现private私聊的按钮,点击该按钮,会调用show talk_p()函数,在show talk_p()中调用show talk()函数,就可以进入到私聊界面中,并在该页面中输入私聊用户名。并点击start按钮,在input框中输入要发送的私聊信息,点击goon按钮,调用send()函数向服务器发送消息。服务器接收到消息后进入work.c文件中,服务器根据消息类型选择私聊处理函数show talk_p(),在该函数中会调用send()函数向私聊用户发送私聊信息,同时将聊天信息存放到数据库中的消息表中。
(2)传输文件操作:点击文件传输按钮,进入ftp.c中的on_button_c()函数,该函数弹出选择文件的窗口,内部调用on_file_select_ok()函数选择文件,temp_file()函数中调用send_file()函数发送文件。接收方点击recv按钮,接收文件。
4 结论
在调查了Linux操作系统的现状的基础上,完成了基于Linux下的聊天室的设计与实现。该聊天室主要实现了注册、登录、私聊、群聊、显示在线人数、查看聊天记录、传输文件以及用户踢下线的功能。该系统基本能够满足Linux用户的聊天需求。