ITPub博客

首页 > IT职业 > IT生活 > 用消息队列和socket实现聊天系统

用消息队列和socket实现聊天系统

IT生活 作者:Jack2k 时间: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一下就可以了。

  一、架构解析

  主要有客户端和服务端,客户端发送请求,服务端回应请求,客户端实现的功能主要见下图:

  图片描述

  注册、登录使用消息队列进行通信的,聊天是通过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/36/viewspace-2813710/ ,如需转载,请注明出处,否则将追究法律责任。

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

注册时间:2007-12-08

  • 博文量
    214
  • 访问量
    17835