前言:最近在学进程间通信,所以做了一个小项目练习一下。主要用消息队列和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] = {'