用訊息佇列和socket實現聊天系統

Jack2k發表於2021-09-09

前言:最近在學程式間通訊,所以做了一個小專案練習一下。主要用訊息佇列和socket(UDP)實現這個系統,並資料庫儲存資料,對C語言操作不熟悉的可以參照我的這篇部落格:https://www.cnblogs.com/liudw-0215/p/9593414.html,所有程式碼提交我的Github上,地址:,可以自行下載,然後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部落格 ” ,連結:http://blog.itpub.net/36/viewspace-2813710/,如需轉載,請註明出處,否則將追究法律責任。

相關文章