ITPub博客

首页 > IT职业 > IT生活 > 消息队列、socket(UDP)实现简易聊天系统

消息队列、socket(UDP)实现简易聊天系统

IT生活 作者:firefule 时间:2021-09-09 09:52:06 0 删除 编辑

 前言:

  最近在学进程间通信,所以做了一个小项目练习一下。主要用消息队列和socket(UDP)实现这个系统,并数据库存储数据,对C语言操作数据库不熟悉的可以参照我的这篇博客:https://www.cnblogs.com/liudw-0215/p/9593414.html,所有代码提交我的Github上,地址:https://github.com/ldw0215/Chat-System.git,可以自行下载,然后make一下就可以了。

   一、项目要求

  1. 要求实现用户注册、用户登录功能,密码需加密显示

  2. 要求实现聊天功能,双方能互发消息  

  3. 数据要求数据库存储

  二、架构解析

  主要流程图如下:

  图片描述  

  主要有客户端(用户)和服务端,客户端发送注册、登录请求,服务端回应请求,并且双方可以模拟聊天(互相发送消息),主要客户端请求界面见下图:

  图片描述

  注册、登录使用消息队列进行通信的,聊天是通过socket(UDP)实现的!数据存在数据库中,需要一张数据表,建表数据语句如下:

  

图片描述

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(64) NOT NULL DEFAULT '',
  `password` varchar(64) NOT NULL DEFAULT '',
  `check` varchar(64) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`)
  ) ENGINE=InnoDB AUTO_INCREMENT=52 DEFAULT CHARSET=utf8;

图片描述

  三、客户端实现

  client.c创建不同的消息队列的键,根据不同的消息类型的进行发送,并等待服务端响应,client.c代码如下:

  

图片描述

#include "my.h"Msg m;
Msg_stoc msg_stoc;static int msgid_ctos;static int msgid_stoc;void showmenu()
{
    puts("-------CHAT----------");
    puts("|  1:发送  2:接收   |");
    puts("|      3:退出       |");
    puts("--------------------");
}void show()
{
    puts("-------CHAT----------");
    puts("|  1:注册  2:登录   |");
    puts("|      0:退出       |");
    puts("--------------------");
}void send1()
{
    printf("%s","send");    char buf[16] = {'

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/1834/viewspace-2813709/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-07-24

  • 博文量
    105
  • 访问量
    15346