UDP畅聊系统

编程入门 行业动态 更新时间:2024-10-13 20:21:30

UDP畅聊<a href=https://www.elefans.com/category/jswz/34/1770742.html style=系统"/>

UDP畅聊系统

文章目录

  • 前言
  • 一、总体实现流程即及框架
    • 1.实现流程
    • 2.用户注册和登录
    • 3.聊天
    • 4.建立不同的实现模块
    • 5.实现各个模块之间的串联
  • 二、各个模块中的接口及其功能
  • 三、最终实现成果
  • 总结

前言

畅聊系统对我们来说已经不陌生了,我们在生活中大量使用的像QQ、微信等聊天程序,都是这种畅聊系统的升级。在学过网络编程、多线程这些知识点之后,已经可以实现服务器与客户端之间的通信,但是,畅聊系统是一种多对一的架构,往往会存在多个客户端,实现多个客户端之间进行信息的收发至关重要。实现一个畅聊系统,既可以对知识有所巩固,也能了解畅聊系统的实现过程。

一、总体实现流程即及框架

1.实现流程


总的实现框架如上图。客户端互相进行发送消息之前,首先需要进行用户的注册和登录,其次才能进行消息的收发。在收发消息的过程中,如client1向client2发送消息,消息是先从clinet1到达server,保存在服务器中,通过服务端这个中转站把消息再转发给client2。

2.用户注册和登录

注册流程如下,客户端输入注册所需的信息,如用户昵称,学校,密码等,注册成功之后,服务器会向注册用户返回一个注册ID,就好比是去注册qq号一样,输入信息成功之后回返回一个注册好的qq号。
在登录阶段,需要客户输入注册ID和密码,服务器会将之前用户注册好的ID和密码进行保存,当客户登录时,会对输入的ID和密码进行比对,正确则密码输入成功,错误则登录失败。

3.聊天

具体聊天过程如下图,客户端1(使用UDP协议)发送数据之后,数据是先到达服务端,但服务端并不是立即把数据推送给其他在线用户,而是先通过生产线程将数据发送到后端数据池,然后再通过消费线程将数据发送到服务端接着推送给其他在线用户。在服务端与数据池之间是一个生产者消费者模型。

4.建立不同的实现模块

在具体实现之前,需要理清思路,建立不同的实现模块,每个模块对应不同的功能。
1.登陆注册模块:这个模块主要管理用户的注册和登录,这一过程使用TCP协议进行数据的收发。
2.用户管理模块:用来管理用户的注册与登录(管理用户登录信息以及维护用户在线列表)
3.数据池模块:保存用户发送的数据
4.工具模块:保存各种信息(如保存日志信息等),与所有模块相关联。

5.实现各个模块之间的串联

在Linux操作系统中建立如下头文件以及源文件来保存各个模块之间的信息,我们的任务就是将这些模块通过代码串联起来实现整个程序

1.在Chatserver.hpp中,需要做到的是创建TCP套接字,创建UDP套接字,创建线程(生产者消费者线程与来关联消息池模块),串联用户管理模块(管理登录信息)和消息池模块(使用udp收发的数据存放到消息池中)。

二、各个模块中的接口及其功能

三、最终实现成果


源代码:

总结

实现这样一个UDP畅聊系统,对于巩固网络方面的知识有很大的帮助。通过这样一次经历,我也等的了编写项目时的一个大体的思路:在刚拿到项目无从下手的时候,我们先不用纠结需要怎样去写具体的实现方法,一直这样的话我们就会陷入一个死循环当中越来越没有思路。我们的一个闭环思路应该是,先着手去想一想为了实现这个目标我们需要提供哪些接口,在编写这些接口的过程中需要哪些成员变量,再根据自己的需求去添加成员变量即可,最终一步一步完成目标。

更多推荐

UDP畅聊系统

本文发布于:2024-02-27 17:27:25,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1707543.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:系统   UDP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!