用訊息佇列和socket實現聊天系統
前言:最近在學程式間通訊,所以做了一個小專案練習一下。主要用訊息佇列和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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Redis實現訊息佇列Redis佇列
- 訊息佇列系列一:訊息佇列應用佇列
- Redis實現簡單訊息佇列Redis佇列
- 系統程式設計——IPC訊息佇列程式設計佇列
- 如何實現MQ佇列訊息監控MQ佇列
- Redis 竟然能用 List 實現訊息佇列Redis佇列
- 使用Spring Boot實現訊息佇列Spring Boot佇列
- 用redis實現訊息佇列(實時消費+ack機制)Redis佇列
- 訊息佇列佇列
- Go中使用Redis實現訊息佇列教程GoRedis佇列
- PHP基於Redis訊息佇列實現的訊息推送的方法PHPRedis佇列
- Redis 使用 List 實現訊息佇列能保證訊息可靠麼?Redis佇列
- Python中執行緒的MQ訊息佇列實現以及訊息佇列的優點解析Python執行緒MQ佇列
- 訊息佇列(MQ)佇列MQ
- Kafka訊息佇列Kafka佇列
- RabbitMQ訊息佇列MQ佇列
- kafka 訊息佇列Kafka佇列
- POSIX訊息佇列佇列
- 訊息佇列(一)佇列
- 訊息佇列(二)佇列
- 訊息佇列二佇列
- [Redis]訊息佇列Redis佇列
- [訊息佇列]rocketMQ佇列MQ
- [訊息佇列]RabbitMQ佇列MQ
- RabbitMQ 訊息佇列之佇列模型MQ佇列模型
- redis訊息佇列簡單應用Redis佇列
- Redis 應用-非同步訊息佇列與延時佇列Redis非同步佇列
- 兩個專案用訊息佇列通訊佇列
- node.js 用socket實現聊天Node.js
- 【linux】系統程式設計-2-訊息佇列Linux程式設計佇列
- 全面理解Handler-1:理解訊息佇列,手寫訊息佇列佇列
- 別再用 Redis List 實現訊息佇列了,Stream 專為佇列而生Redis佇列
- 基於訊息佇列(RabbitMQ)實現延遲任務佇列MQ
- Redis使用ZSET實現訊息佇列使用總結二Redis佇列
- Redis使用ZSET實現訊息佇列使用總結一Redis佇列
- 解析帶emoji和連結的聊天系統訊息
- MQ訊息佇列_RabbitMQMQ佇列
- Java面試—訊息佇列Java面試佇列