基于Socket的网络聊天系统的设计与实现*

2022-12-16 09:23张玉贾遂民郑桂萍
计算机时代 2022年12期
关键词:服务器端聊天消息

张玉,贾遂民,郑桂萍

(郑州师范学院信息科学与技术学院,河南 郑州 450044)

0 引言

聊天系统目前使用范围非常广泛。但是很多企业为了管理方便和防止重要数据泄露,会选择自己独有的通讯系统作为与外界交流、沟通的工具。本系统作为一种聊天软件,它的开发不但考虑了社会型企业专业化管理的需求和信息安全保障需求,而且成本低、效率高、应用范围广、兼容性强。

1 Socket与多线程原理

Socket 套接字是一条通信链的句柄,TCP 连接是两个端点的连接,而这个端点就是抽象的Socket,套接字是由IP 地址加上端口号组合而成的[2]。关于Socket在本系统中的工作原理如图1所示。

图1 Socket工作原理图

Socket是一种接口,主要用于网络编程方面,也是网络通讯的基石。在Client/Server 模式下,按照套接字在网络中所起的不同作用来看,可以将套接字分为客户机套接字Socket和服务器端套接字ServerSocket。套接字ServerSocket 建立后,就一直监听本机的预先设定的端口。当套接字Socket 根据服务器端主机IP,地址进行绑定并建立连接,数据流就通过客户端与服务器之间的Socket 连接将数据传输到服务器端,从而实现信息的传递。当数据信息传输完成时,服务器套接字和客户端套接字要分别关闭。

2 系统设计

2.1 系统功能设计

根据需求分析,本网络通讯系统主要由客户端和服务器两个部分组成的。图2 展示的是系统的整体功能设计图。

图2 网络聊天系统的整体功能图

⑴客户端:主要功能有用户的注册与登录、设置服务器IP、添加或查看好友,以及好友之间互发文本消息等。用户可以向服务器端发送各种不同格式的信息包来要求服务器返回不同的结果。用户可以发送注册/登录的请求,同时客户端还实现了上/下线通知、好友列表显示、消息的编辑、发送/接收、多用户通信等功能。

⑵服务器端:此模块的流程大致为:首先进入可视化窗口,开启服务器,监听客户端,接受客户端发送的请求消息并与客户端建立连接;验证用户账号和密码是否合法。若用户合法,则服务器为客户端开启线程,监听用户的动态,实现消息的中转;如不合法,则继续处于原始状态,以便于能够即时的响应用户的请求。

2.2 系统的流程设计

本通信系统完成了验证用户信息是否合法,验证完成后的操作可根据窗口提示来进行。当用户登录成功进入好友列表界面,用户就可以互发消息。通讯结束之后,用户关闭聊天界面,退出客户端,关闭服务器,退出系统。流程图如图3所示。

图3 基于Socket的网络聊天系统总体流程图

2.3 数据库设计

本系统采用C/S 结构模式,为了减少服务器的负担、方便程序的设计,可以添加数据库作为数据信息存贮的地方。根据功能模块,设计出三个实体:用户注册实体、用户登录实体和通信记录实体,其E-R 图如图4所示。

图4 数据库总体E-R图

根据系统E-R 图设计知系统数据库中包含三个数据表:用户注册信息表、用户登录信息表、通信记录表。

3 系统实现

系统主要包含服务器与客户端。服务器端主要处理开启服务器、用户上线和转发消息三个主要功能,其结构如图5所示。

图5 服务端结构图

客户端主要包括一些简单的界面,实现人工交互,并进行请求响应,其结构如图6所示。

图6 客户端总体结构图

4 结束语

本系统中的客户端与服务器可以分别放到两个独立的计算机上运行,只要知道对应的IP 和端口号就可以达到真实的聊天功能,具有很好的灵活性。系统的主要特性是:灵活的移植性,简单的界面及时、有效、动态地完成数据信息传递;有效地处理客户的不同请求,易于维护与更新。本系统使用服务器处理消息包,然后中转,所以当用户量较大时可能导致服务器压力较大,影响即时通信的性能,这在后续阶段会加以改进与优化。

猜你喜欢
服务器端聊天消息
Linux环境下基于Socket的数据传输软件设计
一张图看5G消息
浅析异步通信层的架构在ASP.NET 程序中的应用
我就是不想跟你聊天了
敞开门聊天
基于Qt的安全即时通讯软件服务器端设计
消息
消息
消息
网页防篡改中分布式文件同步复制系统