基于Linux的即时通信系统设计
2021-03-22刘波
刘波
摘要:本文在阐述即时通信技术支撑的基础上,分析即时通信设计思路,并就其数据库、数据格式、服务器、客户端等要素展开系统设计。期望能实现Linux与即时通信的深度融合,继而最大限度发挥Linux系统的功能,促进即时通信的进一步发展。
关键词:Linux系统;即时通信;C/S架构
中图分类号: TP311 文献标识码:A
文章编号:1009-3044(2021)04-0048-02
作为一种类Unix操作系统,Linux系统在现代通信工程中的应用不断深入,如在个人计算机、服务器或者嵌入式终端设备中均有Linux系统应用的痕迹。从应用效果来看,该系统的开放性较强,其能实现多用户、多任务的同时操作,可靠性较为突出。但该系统应用仍存在一定缺陷,在通信软件应用中,国内外较多通信软件的功能仅局限于Linux版本,这使得通信软件不具备开源性,同时受通信协议差异性的影响,各软件之间不能互相通信。新时期,要实现即时通信技术的进一步发展,有必要进行Linux通信系统的开源设计。
1 即时通信的技术支撑
1.1 通信传输控制协议
即时通信的实现离不开必要的传输控制协议。就传输控制协议而言,其本身具有面向连接的特点,而且可靠性较为突出。在即时通信过程中,传输控制协议对于数据的传输具有深刻影响。实际传输中,该协议首先会进行三次握手,由此实现服务器与客户端之间的系统连接。随后在经过四次挥手操作后,实现服务器与客户端之间的断连控制。需注意的是,在数据传输中,一旦数据验证结果与原数据存在差异,则需要进行数据的再次传输,这样能保证数据的准确性。现阶段,在容量数据传输中,传输控制协议的应用能有效确保数据的可靠性;所不足之处在于该协议的应用会增加数据传输开销,整体传输速度较慢。
1.2 C/S架构
基于传输控制协议建设C/S架构,能为Linux即使通信的实现创造有利条件(见图1)。就C/S架构而言,其本身既有非对称性的特点,该架构将数据库服务作用技术核心,随后通过网络连接,使得多个终端构成一个整体,最后分职能的进行客户端和服务器的管理应用。就服务器而言,其实响应客户端请求并提供相应服务的基础载体,而客户端由具体的YONG 户操作,其会根据自己的实际所需要,向服务器发送不同的请求和指令。通信过程中,服务器起到中转两个客户信息数据的在作用。
2 基于Linux的即时通信系统设计思路
现阶段,市场上即时通信一般按照图2的模式进行设计。当设计人员打开应用程序后,主界面会显示三个基本功能区,该功能区分别为:注册账户、登录和退出。就注册界面而言,其提供注册成功、注册失败两种提示服务;而在登录界面管理中,登录成功需要用户名、密码的完全正确和匹配。用户登錄成功后,用户可进行功能界面的系统操作,需在会的是,用户身份不同,其功能界面也有一定差异,作为系统的管理者,管理员用户功能界面,界面既有独享功能。
3 基于Linux的即时通信系统设计内容
3.1 数据库
数据库在即时通信数据信息管理中发挥着重要作用,其不仅能用来存放注册用户的用户名和密码,而且能对聊天信息进行备份记录。即时通信系统数据库设计中,设计人员需要在创建表格、添加数据的基础上,做好数据更新和数据查询功能的有效设计;通常,该设计过程通过SQLite的编程接口函数来实现,并且在数据库设计中,需保证打开函数和关闭函数处于成对控制状态,这样能避免数据库未关闭对其他程序的影响,同时其能有效避免多程序同时应用导致数据库系统崩溃问题的发生。
基于Linux开展通信系统数据库设计中,将数据库表格名称命名为user,并将数据调整为TEXT类型,随后按照四个4个字段进行数据存储,1~4字段分别用来存放用户名、密码、接收方用户名和聊天内容。
3.2 数据格式
数据格式直接影响着用户端与服务器之间数据传输的功能实现程度,为确保即时通信功能的实现,设计人员多会通过协议的方式对数据格式进行规范,以此来确保模块之间数据通信的实现。本设计中,针对Linux系统下的数据格式管理,侧重以下设计要点管理:其一,将命令号存放在action当中,同时要求实现命令、质量的对应和差异化管理;其二,确定用户名存放组为char类型,并且用户名的长度不得超过30;其三,在接收方管理中,对接收方用户名、密码、消息内容的格式进行系统管理,确保其满足实际的格式应用需要;其四,采用二维数组的方式存放在线用户,并通过最后三个参数对信息行数、列数、具体信息进行记录。需注意的是,在具体信息记录中,要求后期操作者最多可实现100条消息的记录。
经此设计中,客户端、服务器在通信传输中均是以结构体的形式来传输信息,同时基于这些结构体信息,客户端、服务端又可在相应指令的控制下,结合功能需要获取数据,确保了通信的准确实现。
3.3 服务器
Linux系统即时通信中,借助于socket编程接口可实现整个网络编程的规范编写。新系统采用了基于TCP的流式套接字类型,在IP地质和端口号存储中,系统使用sockaddr-in结构进行存储;同时在服务器设计中考虑不同服务终端存储数据的模式差异,做好大端、小端模式的系统划分;此外,设计人员加强地址之间的有效转化,这有效地确保了通信系统服务功能的实现。
在服务器端搭流程管理中,首先采用socket函数创建套接字,其次,在bind函数的支撑下,对套接字绑定相应的IP地质和端口号,随后分别采用listen函数、accept函数监听客户端请求,并实现服务器与客户端的有效连接。最后,服务端与客户端的信息手法通过read/write指令来实现。本次Linux即时通信系统服务器设计中,针对服务器流程的搭建和管理,注重两种套接字的系统管理:其一,分别采用socket函数、listen函数来新建套接字和监听套接字,其二,在专门通信套接字的作用下,完成客户端之间的衔接。需注意的是,针对listen函数的应用,应创建多个线程,然后通过主线程监测客户端的请求,然后通过新建线程来专门处理客户端的通信。而就accept函数而言,其本身是一个阻塞型函数,即当客户端没有请求连接时,该函数一追会处于阻塞状态;而当客户端与服务器连通后,系统会在receive-msg函数的作用下,执行通信线程,这样能确保不同功能的先,并将相应的信息反馈给目标客户端。
后期使用中,基于Linux系统的即时通信服务端按照注册、登录、群聊、私聊、修改密码、查看连天记录、踢人、禁言与解禁的流程进行管理。具体管理中,本系统还具有以下功能:其一,在注册界面,针对新注册用户,对用户名进行检测,将已注冊用户名按照错误号实施返回处理;其二,在群聊过程中,先将用户需要发送的信息保存到数据库的聊天字段,随后转移发送给所有在线用户;其三,在向私聊用户发送信息时,按照检测用户是否在线、向在线用户保存、发送信息的模式进行管理。其四,用户名密码修改按照update命令进行,并且在password字段密码更改中,其对会对新密码的格式、安全程度进行检测,确保用户信息安全。其五,踢人功能实现中,先将其通信套接字置零,随后移出在线列表。
3.4 客户端
客户端的应用应有助于用户操作的便捷性,进而提升通信的效率性、稳定性。在C/S框架下,基于Linux系统的即时通信实现按照开始、用socket函数创建套接字、用accept函数连接,设置服务器IP地址可端口号、用read/write函数进行客户端信息收发的流程进行建设。
客户端开始运行后,其首先会显示主页面,在主页面上,用户会按照注册、登录、退出的指令进行相应操作。指令不同,其对应的执行函数也要一定差异性。当用户实现准确登录后,在多线程技术的支撑下,整个系统可以实施读写分离操作。该传输控制模式下,主线程、新建线程的工作路径具有较大区别。就主线程而依然,其会在分析用户身份的基础上,对接相应的功能界面,随后,在用户输入指令的作用下,整个系统会开始想服务器发送消息。而就新建线程而言,其能在接收服务器发送消息后,对消息的结构体进行解析,继而获取相应数据,完成指令信息对应功能的显示。
在客户执行流程管理中,本次设计关注向服务器发送消息、从服务器读取信息的优化。一方面,在向服务器发送消息时,对用户的身份进行分析,然后系统显示对应的功能。如相比于普通用户,管理员用户具有踢人、新增用户、禁言、解禁等诸多功能。另一方面,从服务器读取信息中,强化信息结构体解析和显示管理,确保用户接收信息的效率性、准确性。
完成Linux系统即时通信系统设计后,在Redhat操作系统环境下进行功能测试,新设计系统具备开源能力,满足即时通信控制需要。
4 结论
对Linux系统进行设计优化,能进一步提升即时通信的效率与质量。本次设计中,在C语言的支撑下,基于Linux平台开展即时通信系统设计,新设计系统采用TCP协议对C/S架构进行管理,同时建立SQLite数据库,进行用户信息存储,最后通过Redhat操作系统环境进行新系统测试。测试结果表明,新设计系统不仅满足了即时通信注册、登录到查看聊天记录的所有基本功能,而且为管理员新增用户独享 踢人、禁言和解禁等诸多功能,其有效地实现了即时通信中Linux系统的开源管理,这满足了即时通信需要,提升了系统运行的稳定性、实用性。
参考文献:
[1] 侯姗.基于嵌入式Linux的多关节机器人通信系统设计[J].通信电源技术,2020,196(4):60-61.
【通联编辑:李雅琪】