#include "MsgBuilder.h"
#include <QJsonObject>
#include <QJsonDocument>
#include <QJsonArray>
int MsgBuilder::getType(QString jsonStr)
{
QJsonDocument doc = QJsonDocument::fromJson(jsonStr.toUtf8());
QJsonObject parse = doc.object();//获得json对象容器的对象
int type = parse.value("type").toInt();
return type;
}
QString MsgBuilder::buildRegisterUserMsg(UserData userData)
{
QJsonObject json;//创建一个对象容器
json.insert("type", registerUser);
json.insert("nickname", userData.nickname);
json.insert("password", userData.password);
json.insert("headid", userData.headId);
QJsonDocument doct;//QJsonDocument用于字符串和json对象之间的转换
doct.setObject(json);//将构建好的json对象设置被QJsonDocument对象
QByteArray byte=doct.toJson();//将json对象转换成json字符串,返回值是字节数组
QString str(byte);//使用字节数组创建字符串
return str;
}
bool MsgBuilder::parseRegisterUserMsg(QString jsonStr, UserData &userData)
{
//使用json字符串创建QJsonDocument,str.toUtf8()将字符串转换成UTF-8格式的字节数组
QJsonDocument doc = QJsonDocument::fromJson(jsonStr.toUtf8());
QJsonObject parse = doc.object();//获得json对象容器的对象
userData.nickname = parse.value("nickname").toString();
userData.password = parse.value("password").toString();
userData.headId = parse.value("headid").toInt();
return true;
}
QString MsgBuilder::buildRegisterUserReturnMsg(UserData userData)
{
QJsonObject json;//创建一个对象容器
json.insert("type", registerUserReturn);
json.insert("id", userData.id);
QJsonDocument doct;//QJsonDocument用于字符串和json对象之间的转换
doct.setObject(json);//将构建好的json对象设置被QJsonDocument对象
QByteArray byte=doct.toJson();//将json对象转换成json字符串,返回值是字节数组
QString str(byte);//使用字节数组创建字符串
return str;
}
bool MsgBuilder::parseRegisterUserReturnMsg(QString jsonStr, UserData &userData)
{
//使用json字符串创建QJsonDocument,str.toUtf8()将字符串转换成UTF-8格式的字节数组
QJsonDocument doc = QJsonDocument::fromJson(jsonStr.toUtf8());
QJsonObject parse = doc.object();//获得json对象容器的对象
userData.id = parse.value("id").toInt();
return true;
}
QString MsgBuilder::buildLoginMsg(UserData userData)
{
QJsonObject json;//创建一个对象容器
json.insert("type", login);
json.insert("id", userData.id);
json.insert("password", userData.password);
QJsonDocument doct;//QJsonDocument用于字符串和json对象之间的转换
doct.setObject(json);//将构建好的json对象设置被QJsonDocument对象
QByteArray byte=doct.toJson();//将json对象转换成json字符串,返回值是字节数组
QString str(byte);//使用字节数组创建字符串
return str;
}
bool MsgBuilder::parseLoginMsg(QString jsonStr, UserData &userData)
{
//使用json字符串创建QJsonDocument,str.toUtf8()将字符串转换成UTF-8格式的字节数组
QJsonDocument doc = QJsonDocument::fromJson(jsonStr.toUtf8());
QJsonObject parse = doc.object();//获得json对象容器的对象
userData.id = parse.value("id").toInt();
userData.password = parse.value("password").toString();
return true;
}
QString MsgBuilder::buildLoginSucMsg(UserData userData, vector<UserData> online)
{
QJsonObject json;//创建一个对象容器
//登录用户的信息
json.insert("type", loginSucReturn);
json.insert("userid", userData.id);
json.insert("nickname", userData.nickname);
json.insert("headid", userData.headId);
//其他用户的信息
QJsonArray userArr;
for(int i = 0;i < online.size();i++)
{
QJsonObject user;//每个人是一个json对象
user.insert("userid", online[i].id);
user.insert("nickname", online[i].nickname);
user.insert("headid", online[i].headId);
userArr.append(user);
}
json.insert("online", userArr);
QJsonDocument doct;//QJsonDocument用于字符串和json对象之间的转换
doct.setObject(json);//将构建好的json对象设置被QJsonDocument对象
QByteArray byte=doct.toJson();//将json对象转换成json字符串,返回值是字节数组
QString str(byte);//使用字节数组创建字符串
return str;
}
bool MsgBuilder::parseLoginSucMsg(QString jsonStr, UserData &userData, vector<UserData>& online)
{
//使用json字符串创建QJsonDocument,str.toUtf8()将字符串转换成UTF-8格式的字节数组
QJsonDocument doc = QJsonDocument::fromJson(jsonStr.toUtf8());
QJsonObject parse = doc.object();//获得json对象容器的对象
userData.id = parse.value("userid").toInt();
userData.nickname = parse.value("nickname").toString();
userData.headId = parse.value("headid").toInt();
QJsonArray userArr = parse.value("online").toArray();
for(QJsonArray::iterator iter = userArr.begin();iter != userArr.end();iter++)
{
UserData ud;
QJsonObject user = iter->toObject();
ud.id = user.value("userid").toInt();
ud.nickname = user.value("nickname").toString();
ud.headId = user.value("headid").toInt();
online.push_back(ud);
}
return true;
}
QString MsgBuilder::buildLoginLoseMsg(UserData userData)
{
QJsonObject json;//创建一个对象容器
json.insert("type", loginLoseReturn);
QJsonDocument doct;//QJsonDocument用于字符串和json对象之间的转换
doct.setObject(json);//将构建好的json对象设置被QJsonDocument对象
QByteArray byte=doct.toJson();//将json对象转换成json字符串,返回值是字节数组
QString str(byte);//使用字节数组创建字符串
return str;
}
QString MsgBuilder::buildUserOnline(UserData userData)
{
QJsonObject json;//创建一个对象容器
json.insert("type", userOnline);
json.insert("userid", userData.id);
json.insert("nickname", userData.nickname);
json.insert("headid", userData.headId);
QJsonDocument doct;//QJsonDocument用于字符串和json对象之间的转换
doct.setObject(json);//将构建好的json对象设置被QJsonDocument对象
QByteArray byte=doct.toJson();//将json对象转换成json字符串,返回值是字节数组
QString str(byte);//使用字节数组创建字符串
return str;
}
bool MsgBuilder::parseUserOnline(QString jsonStr, UserData &userData)
{
//使用json字符串创建QJsonDocument,str.toUtf8()将字符串转换成UTF-8格式的字节数组
QJsonDocument doc = QJsonDocument::fromJson(jsonStr.toUtf8());
QJsonObject parse = doc.object();//获得json对象容器的对象
userData.nickname = parse.value("nickname").toString();
userData.id = parse.value("userid").toInt();
userData.headId = parse.value("headid").toInt();
return true;
}
QString MsgBuilder::buildUserOffline(UserData userData)
{
QJsonObject json;//创建一个对象容器
json.insert("type", userOffline);
json.insert("userid", userData.id);
json.insert("nickname", userData.nickname);
json.insert("headid", userData.headId);
QJsonDocument doct;//QJsonDocument用于字符串和json对象之间的转换
doct.setObject(json);//将构建好的json对象设置被QJsonDocument对象
QByteArray byte=doct.toJson();//将json对象转换成json字符串,返回值是字节数组
QString str(byte);//使用字节数组创建字符串
return str;
}
bool MsgBuilder::parseUserOffline(QString jsonStr, UserData &userData)
{
//使用json字符串创建QJsonDocument,str.toUtf8()将字符串�
没有合适的资源?快使用搜索试试~ 我知道了~
基于QT的局域网聊天室
共89个文件
jpg:34个
cpp:21个
h:19个
需积分: 0 0 下载量 2 浏览量
2024-05-14
09:02:00
上传
评论
收藏 1.63MB RAR 举报
温馨提示
基于 C++/QT 框架的网络聊天室,用户可以通过客户端注册登陆到聊天室服务器,定点向群内用户发送聊天内容,服务器收到数据之后转发给对应用户,服务器每隔一段时间主动给所有客户端发送数据检测客户端是否在线,如果收到客户端回复则不做处理否则设置删除用户套接字,用户登录状态为 OFF,即下线状态。
资源推荐
资源详情
资源评论
收起资源包目录
聊天项目.rar (89个子文件)
testChatClient
LoginWindow.h 760B
UserSocket.cpp 585B
CreateGroupDialog.cpp 1KB
FriendForm.ui 3KB
RegisterDialog.h 500B
LoginWindow.cpp 3KB
CreateGroupDialog.ui 2KB
FriendForm.h 601B
LoginWindow.ui 6KB
testChatClient.pro 1KB
image
head9.jpg 6KB
head29.jpg 6KB
head20.jpg 10KB
head22.jpg 7KB
head31.jpg 9KB
head16.jpg 7KB
head25.jpg 7KB
head8.jpg 8KB
head28.jpg 8KB
head11.jpg 8KB
bg1.jpg 626KB
head27.jpg 7KB
head3.jpg 10KB
head18.jpg 8KB
head2.jpg 8KB
head1.jpg 7KB
head21.jpg 11KB
head32.jpg 8KB
head17.jpg 5KB
head19.jpg 6KB
head6.jpg 6KB
head24.jpg 5KB
head12.jpg 7KB
head26.jpg 7KB
head7.jpg 15KB
head30.jpg 9KB
head13.jpg 8KB
head4.jpg 10KB
bg2.jpg 733KB
red.png 46KB
head15.jpg 8KB
head10.jpg 6KB
head5.jpg 8KB
head14.jpg 9KB
head23.jpg 6KB
image.qrc 1KB
GroupChatDialog.ui 1KB
testChatClient.pro.user 18KB
MsgBuilder.h 6KB
GroupChatDialog.h 940B
HeadManager.h 173B
RegisterDialog.ui 5KB
HeadManager.cpp 270B
ChatDialog.h 858B
main.cpp 189B
FriendForm.cpp 1KB
GroupChatDialog.cpp 3KB
ChatWidget.cpp 618B
GroupDialog.cpp 2KB
ChatItem.cpp 2KB
RegisterDialog.cpp 2KB
GroupDialog.ui 2KB
GroupDialog.h 837B
UserSocket.h 625B
ChatDialog.ui 2KB
MainWindow.cpp 7KB
ChatWidget.h 325B
MainWindow.ui 3KB
CreateGroupDialog.h 548B
ChatDialog.cpp 2KB
ChatItem.h 540B
MsgBuilder.cpp 24KB
MainWindow.h 2KB
testChatServer
Server24012.cpp 241B
testChatServer.pro.user 18KB
AssistThread.cpp 12KB
MsgBuilder.h 6KB
testChatServer.pro 656B
Server24012.h 345B
UserDao.h 868B
AssistThread.h 2KB
main.cpp 187B
UserManager.cpp 4KB
MainWindow.cpp 888B
MainWindow.ui 1KB
UserDao.cpp 2KB
MsgBuilder.cpp 24KB
MainWindow.h 471B
UserManager.h 2KB
共 89 条
- 1
资源评论
凌云1003
- 粉丝: 3
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功