MFC-SaoChat(模仿QQ)聊天软件

时间:2024-04-12 17:14:26
本篇文章由:原用户名(zg51747708),现在:骚里骚气  曾广 原创,未经允许不可以转载
(我建立的服务器已经不再运行了。源码仅供学习,如果想自己搭建服务器,请安装下面的数据库结构图,建立对应数据库,并且设置好链接字符串) 
我的SaoChat账号是51747708哦!添加好友必须对方也在线哦!不然就要提示!
MFC-SaoChat(模仿QQ)聊天软件
大家可以来注册。服务器24小时运行。
账号可以是1-11位数,密码1到20位。 (账号除了0都是可以申请的哦!)0是内部用户。
客户端下载地址: http://pan.baidu.com/s/1hrHOIZ6                 KEY :  
k5ba

发现BUG或者交流小伙伴可以私聊我的QQ哦!相互学习!共同进步!

客户端,服务器源码,已经工程说明下载地址:
http://pan.baidu.com/s/1eRA1qlc        KEY :
3zsc

概述

    协议采用:UDP协议(应答机制,丢包重发)

    同时在线人数:2000人以下

    数据库:SQL server 2008

实现的功能:

1.账号注册

2.登陆

3.好友(添加,删除,如果一方删除另一方,将两方都失去对方好友)

4.分组管理好友(分组操作,添加删除,移动好友)

5.收到对方消息,将自动弹出聊天窗口。

服务器

一,服务器模型

服务器采用,多线程单用户处理。

二,编写环境

C++ MFC类库 VS2017

三,单元模块

    单用户处理单元(能够一对一处理一个用户的所有请求)

    (主通信线程)线程管理单元(能接受新用户建立连接请求,经过验证账号密码后,建立起一个单用户处理单元(线程),与其进行交互)

单用户处理单元(类似服务员)

处理各种交互数据,处理客户端一切请求。

(主通信线程)线程管理单元(类似管理者)

负责处理,注册请求,登陆请求。登陆成功后,建立起对应的通信线程,并管理通信线程。

数据组成部分

    数据库操作类                    (CDataBaseUserIDInfo)(采用ado com接口操作数据库)

    用户通信处理线程函数            (UserCommunication)

    主通信线程函数                  (MainCommunication)

    用户类                          (CUser)

四,服务器要求

本人测试时,服务器使用的系统是:

MicrosoftWindwos Server 2012 R2 Datacenter

数据库采用 SQLserver 2008 R2 版本

服务器配置:

CPU: Intel(R) Xeon(R) CPU E5-2682 v4 @ 2.50GHz

RAM:2GB

磁盘空间: 40GB (包含操作系统)

 

五,服务器界面

MFC-SaoChat(模仿QQ)聊天软件

六,备注

///服务器关闭

注意:在主线程的WM_CLOSE消息响应中。必须要等待所有线程都退出后方可执行。

设置全局的退出变量的值为TRUE(这个变量在stdafx.cpp)

并且检测所有线程的SOCKET状态,如果为阻塞,就关闭SOCKET使其检测退出变量。

 

WM_CLOSE消息响应的函数中,一直检查用户类数组中所有成员对应的线程的运行状态直到全部退出为止。并提供强制退出按钮。

七,好友数据格式

// 好友数据数据发送格式

content:sizeof(char)个字节(1)存储是否还有好友列表

content:接下来sizeofchar)个字节(1)存储是否这个分组还有好友

content:接下来(22)个字节存储好友列表分组名称(10个字符一个结束符)wchar_t

content:剩下的,每个(35字节)存储一个好友信息

Remarker:一次最多传输27个好友

{每个好友的信息存储格式

    (char[1])在线状态(char[12])好友ID (char 22)好友备注    {35字节}

八,工程目录

MFC-SaoChat(模仿QQ)聊天软件


 

九,数据库设计
 MFC-SaoChat(模仿QQ)聊天软件
两张表
 user_friend_tables

 MFC-SaoChat(模仿QQ)聊天软件
user_info_tables

 MFC-SaoChat(模仿QQ)聊天软件

客户端

一,编写环境

二,   C++ MFC类库 VS2017

二,组成部分

窗口组成

登陆窗口

MFC-SaoChat(模仿QQ)聊天软件

注册窗口

MFC-SaoChat(模仿QQ)聊天软件

用户界面

MFC-SaoChat(模仿QQ)聊天软件

右键菜单

MFC-SaoChat(模仿QQ)聊天软件MFC-SaoChat(模仿QQ)聊天软件MFC-SaoChat(模仿QQ)聊天软件

MFC-SaoChat(模仿QQ)聊天软件

聊天界面

 

 MFC-SaoChat(模仿QQ)聊天软件


 

三,通信线程

l 请求线程

l 接收线程

请求线程负责各种请求(例如,添加好友请求,发送消息请求

接收线程负责接收(例如,接收消息,接收好友请求

四,通信协议

协议文件

Protocol.h

协议格式

typedefcharOneBty;

//----------------------------数据包格式                            

typedefstructSao_Protocol

{

    OneBty action;

    OneBty id[SAO_LENTH_ID + 1];

    OneBty password[SAO_LENTH_PASSWORD+ 1];

    OneBty content[SAO_LENTH_CONTENT+ 1];

}SAO_PROTOCOL, *SAO_PPROTOCOL;

协议格式:

账号#密码#行为#内容

数据包大小:                    (1023字节)

行为:0-256                                 (1字节)

账号:111位的数字。          (11字节)

密码:620位字母数字符号组合。(20字节)

内容                            (989字节)

 

行为列表:

//----------------------------ACTION

#defineSAO_PROTOCOL_FAIL                   -1                         //操作失败(登陆时代表密码错误)

#defineSAO_PROTOCOL_SUCCESS                0                          //操作成功(登陆时代表密码正确)

#defineSAO_PROTOCOL_LOGIN                  1                          //登陆

#defineSAO_PROTOCOL_REGIST                 2                          //注册

#defineSAO_PROTOCOL_SEND                   3                          //发送消息

#defineSAO_PROTOCOL_LOGOUT                 4                          //注销

#defineSAO_PROTOCOL_NO_USER                5                          //用户不存在

#defineSAO_PROTOCOL_NEW_PROT               6                          //新通信端口(服务器发送给客户端)

#defineSAO_PROTOCOL_REQUEST_FRIEND_LIST    7                          //请求好友列表(服务器发送给客户端时,代表是好友列表数据)

#defineSAO_PROTOCOL_I_ONLINE               8                          //表示我在线(用户发送给客户端)

#defineSAO_PROTOCOL_CHANGE_GROUP_NAME      9                          //改变分组名称

#defineSAO_PROTOCOL_RECV                   10                         //接收消息

#defineSAO_PROTOCOL_REQUEST_FRIEND_LIST_F  11                         //第一次请求好友列表

#defineSAO_PROTOCOL_ADD_GROUP              12                         //添加分组

#defineSAO_PROTOCOL_DELETE_GROUP           13                         //删除分组

#defineSAO_PROTOCOL_ADD_FRIEND             14                         //添加好友

#defineSAO_PROTOCOL_DELETE_FRIEND          15                         //删除好友

#defineSAO_PROTOCOL_RECV_ADD_FRIEND        16                         //接收到添加好友请求

#defineSAO_PROTOCOL_USER_OFFLINE           17                         //用户不在线

#defineSAO_PROTOCOL_ADD_FRIEND_REQUEST_OK  18                         //成功发送添加好友请求

#defineSAO_PROTOCOL_AGREE_ADD              19                         //同意添加好友

#defineSAO_PROTOCOL_ALREADY_FRIEND         20                         //已经是好友

#defineSAO_PROTOCOL_MOVE_FRIEND            21                         //移动好友  

#defineSAO_PROTOCOL_RENAME_REMARKS         22                         //重命名好友备注

 

五,工程目录

MFC-SaoChat(模仿QQ)聊天软件