Commit dd7fdb79 by NitefullWind

1. 可配置是否启用FMSOCKETHEADER。

parent 18f682b1
...@@ -17,6 +17,7 @@ FMPVipServer::FMPVipServer() : ...@@ -17,6 +17,7 @@ FMPVipServer::FMPVipServer() :
{ {
Listen(23770); Listen(23770);
connect(this, &QTcpServer::newConnection, this, &FMPVipServer::onNewConnection); connect(this, &QTcpServer::newConnection, this, &FMPVipServer::onNewConnection);
isNeedSocketHeader = FMPVipSettings::instance()->getIsNeedSocketHeader();
} }
void FMPVipServer::Listen(quint16 port) void FMPVipServer::Listen(quint16 port)
...@@ -56,10 +57,19 @@ void FMPVipServer::onReadyRead() ...@@ -56,10 +57,19 @@ void FMPVipServer::onReadyRead()
{ {
QByteArray recvData = socket->readAll(); QByteArray recvData = socket->readAll();
if(isNeedSocketHeader) {
FMSOCKEHEADER header = {0};
memcpy(&header, recvData.data(), sizeof(FMSOCKEHEADER));
if(header.flag != FMSOCKFLAG) {
FMP_WARN() << "Incompatible protocol.";
return;
}
recvData = recvData.mid(sizeof(FMSOCKEHEADER));
}
QByteArray rspData; QByteArray rspData;
dispatcher->doTask(recvData, rspData); dispatcher->doTask(recvData, rspData);
rspData;
Write(rspData); Write(rspData);
socket->waitForBytesWritten(); socket->waitForBytesWritten();
......
...@@ -34,6 +34,8 @@ private: ...@@ -34,6 +34,8 @@ private:
QTcpSocket *socket; QTcpSocket *socket;
FMVipDispatcher *dispatcher; FMVipDispatcher *dispatcher;
bool isNeedSocketHeader;
}; };
#endif // FMP_VIP_SERVER_H #endif // FMP_VIP_SERVER_H
...@@ -22,6 +22,11 @@ QString FMPVipSettings::getServerUrl() ...@@ -22,6 +22,11 @@ QString FMPVipSettings::getServerUrl()
return _GetValue(FMP_INIKEY_VIPSERVER).toString(); return _GetValue(FMP_INIKEY_VIPSERVER).toString();
} }
bool FMPVipSettings::getIsNeedSocketHeader()
{
return _GetValue(FMP_INIKEY_NEEDSOCKETHEADER, false).toBool();
}
QVariant FMPVipSettings::_GetValue(const QString &key, QVariant defaultValue) QVariant FMPVipSettings::_GetValue(const QString &key, QVariant defaultValue)
{ {
if (_settings) { if (_settings) {
......
...@@ -15,6 +15,7 @@ public: ...@@ -15,6 +15,7 @@ public:
void init(FMPSettingsInterface *settings); void init(FMPSettingsInterface *settings);
QString getServerUrl(); QString getServerUrl();
bool getIsNeedSocketHeader();
private: private:
explicit FMPVipSettings(QObject *parent = 0); explicit FMPVipSettings(QObject *parent = 0);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment