91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

Qt使用tcp實現的簡單服務端和客戶端(帶心跳檢測)。。很基礎的實現,大概適合對Qt tcpsever 不太清楚的人看。。

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include?
#include?“chatsocket.h“
#include?“mymessagedef.h“

ChatSocket::ChatSocket(qintptr?socketDescriptor?Qobject?*parent)
????:???QTcpSocket(parent)
{
????if?(!setSocketDescriptor(socketDescriptor))
????{
????????emit?consoleMessage(errorString());
????????deleteLater();
????}

????m_heartbeat?=?new?QTimer(this);
????m_heartbeat->setInterval(30000);
????m_lastTime?=?QDateTime::currentDateTime();

????connect(this?&ChatSocket::readyRead?this?&ChatSocket::heartbeat);
????connect(this?&ChatSocket::readyRead?this?&ChatSocket::readClientData);
????connect(this?&ChatSocket::disconnected?this?&ChatSocket::onDisconnected);
????connect(m_heartbeat?&QTimer::timeout?this?&ChatSocket::checkHeartbeat);

????m_data.clear();
????m_heartbeat->start();?????????????????//開始心跳
}

ChatSocket::~ChatSocket()
{

}

void?ChatSocket::heartbeat()
{
????if?(!m_heartbeat->isActive())
????????m_heartbeat->start();????
????m_lastTime?=?QDateTime::currentDateTime();
}

void?ChatSocket::checkHeartbeat()
{
????if?(m_lastTime.secsTo(QDateTime::currentDateTime())?>=?30)???//檢測掉線,停止心跳
????{
????????qDebug()?<????????m_heartbeat->stop();
????????disconnectFromHost();
????}
}

void?ChatSocket::onDisconnected()
{
????emit?clientDisconnected(peerAddress().toString());
????emit?consoleMessage(peerAddress().toString()?+?“?斷開連接..“);
????deleteLater();
}

void?ChatSocket::readClientData()
{
????static?int?got_size?=?0;
????static?MSG_TYPE?type?=?MT_UNKNOW;
????static?MSG_MD5_TYPE?md5;

????if?(m_data.size()?==?0)??//必定為消息頭
????{????????
????????QDataStream?in(this);
????????in.setVersion(QDataStream::Qt_5_9);

????????MSG_FLAG_TYPE?flag;
????????in?>>?flag;
????????if?(flag?!=?MSG_FLAG)
????????????return;

????????in?>>?type;
????????if?(type?==?MT_HEARTBEAT)???????????//心跳檢測,直接返回
????????????return;

????????MSG_SIZE_TYPE?size;
????????in?>>?size?>>?md5;
????????m_data.resize(size);
????}
????else????????????????????????????????//合并數據
????{
????????QByteArray?data?=?read(bytesAvailable());
????????m_data.replace(got_size?data.size()?data);
????????got_size?+=?data.size();
????}

????if?(got_size?==?m_data.size())?????//接收完畢
????{
????????QByteArray?md5_t?=?QCryptographicHash::hash(m_data?QCryptographicHash::Md5);
????????if?(md5?==?md5_t)???//正確的消息
????????{
????????????QString?str?=?QString::fromLocal8Bit(m_data.data());
????????????emit?consoleMessage(QString(“md5?一致,消息為:\““?+?str?+?“\“,大?。骸?+?QString::number(m_data.size())));
????????????switch?(type)
????????????{
????????????case?MT_SHAKE:

????????????????break;
????????????case?MT_TEXT:

????????????????break;
????????????default:
????????????????break;
????????????}
????????}

????????got_size?=?0;???????????//重新開始
????????type?=?MT_UNKNOW;
????????md5.clear();
????????m_data.clear();
????}

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件?????382534??2017-10-16?12:14??ChatServer\9.jpg

?????文件???????1259??2018-04-11?21:24??ChatServer\ChatServer.pro

?????文件???????3141??2018-04-13?19:25??ChatServer\chatsocket.cpp

?????文件????????636??2018-04-13?19:42??ChatServer\chatsocket.h

?????文件???????2112??2018-04-13?19:11??ChatServer\chattcpserver.cpp

?????文件????????513??2018-04-13?17:16??ChatServer\chattcpserver.h

?????文件????????404??2018-04-13?20:30??ChatServer\main.cpp

?????文件???????5427??2018-04-13?18:06??ChatServer\main.qml

?????文件????????835??2018-04-13?12:43??ChatServer\mymessagedef.h

?????文件??????12431??2018-04-13?20:30??fortuneclient\client.cpp

?????文件???????3487??2018-04-12?21:02??fortuneclient\client.h

?????文件????????235??2018-04-13?20:40??fortuneclient\fortuneclient.pro

?????文件??????24016??2018-04-13?20:40??fortuneclient\fortuneclient.pro.user

?????文件???????2771??2017-06-28?17:54??fortuneclient\main.cpp

?????目錄??????????0??2018-04-13?20:36??ChatServer

?????目錄??????????0??2018-04-13?20:40??fortuneclient

-----------?---------??----------?-----??----

???????????????439801????????????????????16


評論

共有 條評論