33#include < tchar.h>
44#pragma comment(lib,"Ws2_32.lib")
55#pragma comment(lib,"XEngine_BaseLib/XEngine_BaseLib.lib")
6+ #pragma comment(lib,"XEngine_Core/XEngine_Cryption.lib")
67#pragma comment(lib,"XEngine_Client/XClient_Socket.lib")
78#endif
89#include < stdio.h>
@@ -15,18 +16,22 @@ using namespace std;
1516#include < XEngine_Include/XEngine_ProtocolHdr.h>
1617#include < XEngine_Include/XEngine_BaseLib/BaseLib_Define.h>
1718#include < XEngine_Include/XEngine_BaseLib/Algorithm_Error.h>
19+ #include < XEngine_Include/XEngine_Core/Cryption_Define.h>
20+ #include < XEngine_Include/XEngine_Core/Cryption_Error.h>
1821#include < XEngine_Include/XEngine_Client/XClient_Define.h>
1922#include < XEngine_Include/XEngine_Client/XClient_Error.h>
2023#include " ../../XEngine_Source/XQueue_ProtocolHdr.h"
2124
2225// VS2022 Debug x86 Compile
23- // g++ -std=c++17 -Wall -g MQCore_TCPApp.cpp -o MQCore_TCPApp.exe -lXEngine_BaseLib -lXClient_Socket
26+ // g++ -std=c++17 -Wall -g MQCore_TCPApp.cpp -o MQCore_TCPApp.exe -lXEngine_BaseLib -lXEngine_Cryption -lXClient_Socket
27+ #define XENGINE_CRYPTION_DATA_ENABLE 1
2428
2529XSOCKET m_Socket;
2630__int64x nLastNumber = 0 ;
2731LPCXSTR lpszKey = _X(" XEngine_CommKey" ); // 主题
2832LPCXSTR lpszUser = _X(" 123123aa" );
2933LPCXSTR lpszPass = _X(" 123123" );
34+ LPCXSTR lpszCryptKey = _X(" 123123aa" ); // 加解密密钥
3035
3136void MQ_Authorize ()
3237{
@@ -55,6 +60,10 @@ void MQ_Authorize()
5560 memcpy (tszMsgBuffer, &st_ProtocolHdr, sizeof (XENGINE_PROTOCOLHDR));
5661 memcpy (tszMsgBuffer + sizeof (XENGINE_PROTOCOLHDR), &st_ProtocolAuth, sizeof (XENGINE_PROTOCOL_USERAUTH));
5762
63+ #if 1 == XENGINE_CRYPTION_DATA_ENABLE
64+ Cryption_Api_CryptEncodec (NULL , (XBYTE*)(tszMsgBuffer + sizeof (XENGINE_PROTOCOLHDR)), (int *)&st_ProtocolHdr.unPacketSize , lpszCryptKey);
65+ #endif
66+
5867 if (!XClient_TCPSelect_SendMsg (m_Socket, tszMsgBuffer, nLen))
5968 {
6069 _xtprintf (" 发送投递失败!\n " );
@@ -98,6 +107,10 @@ void MQ_GetUNRead(int nType = 0)
98107 memcpy (tszMsgBuffer, &st_ProtocolHdr, sizeof (XENGINE_PROTOCOLHDR));
99108 memcpy (tszMsgBuffer + sizeof (XENGINE_PROTOCOLHDR), &st_XMQProtocol, sizeof (XENGINE_PROTOCOL_XMQ));
100109
110+ #if 1 == XENGINE_CRYPTION_DATA_ENABLE
111+ Cryption_Api_CryptEncodec (NULL , (XBYTE*)(tszMsgBuffer + sizeof (XENGINE_PROTOCOLHDR)), (int *)&st_ProtocolHdr.unPacketSize , lpszCryptKey);
112+ #endif
113+
101114 if (!XClient_TCPSelect_SendMsg (m_Socket, tszMsgBuffer, nLen))
102115 {
103116 _xtprintf (" 发送投递失败!\n " );
@@ -112,6 +125,9 @@ void MQ_GetUNRead(int nType = 0)
112125 memset (&st_ProtocolHdr, ' \0 ' , sizeof (XENGINE_PROTOCOLHDR));
113126 if (XClient_TCPSelect_RecvPkt (m_Socket, &ptszMsgBuffer, &nLen, &st_ProtocolHdr))
114127 {
128+ #if 1 == XENGINE_CRYPTION_DATA_ENABLE
129+ Cryption_Api_CryptDecodec (NULL , (XBYTE*)ptszMsgBuffer, &nLen, lpszCryptKey);
130+ #endif
115131 if (0 == st_ProtocolHdr.wReserve )
116132 {
117133 _xtprintf (" 接受到数据,长度:%d,内容:%s\n " , st_ProtocolHdr.unPacketSize , ptszMsgBuffer);
@@ -153,6 +169,9 @@ void MQ_Create()
153169 memcpy (tszMsgBuffer, &st_ProtocolHdr, sizeof (XENGINE_PROTOCOLHDR));
154170 memcpy (tszMsgBuffer + sizeof (XENGINE_PROTOCOLHDR), &st_XMQProtocol, sizeof (XENGINE_PROTOCOL_XMQ));
155171
172+ #if 1 == XENGINE_CRYPTION_DATA_ENABLE
173+ Cryption_Api_CryptEncodec (NULL , (XBYTE*)(tszMsgBuffer + sizeof (XENGINE_PROTOCOLHDR)), (int *)&st_ProtocolHdr.unPacketSize , lpszCryptKey);
174+ #endif
156175 if (!XClient_TCPSelect_SendMsg (m_Socket, tszMsgBuffer, nLen))
157176 {
158177 _xtprintf (" 发送投递失败!\n " );
@@ -229,6 +248,9 @@ void MQ_Post(LPCXSTR lpszMsgBuffer, int nType = 0, int nPubTime = -1, bool bSelf
229248 memcpy (tszMsgBuffer + sizeof (XENGINE_PROTOCOLHDR) + sizeof (XENGINE_PROTOCOL_XMQ), lpszMsgBuffer, strlen (lpszMsgBuffer));
230249 }
231250
251+ #if 1 == XENGINE_CRYPTION_DATA_ENABLE
252+ Cryption_Api_CryptEncodec (NULL , (XBYTE*)(tszMsgBuffer + sizeof (XENGINE_PROTOCOLHDR)), (int *)&st_ProtocolHdr.unPacketSize , lpszCryptKey);
253+ #endif
232254 if (!XClient_TCPSelect_SendMsg (m_Socket, tszMsgBuffer, nLen))
233255 {
234256 _xtprintf (" 发送投递失败!\n " );
@@ -243,6 +265,10 @@ void MQ_Post(LPCXSTR lpszMsgBuffer, int nType = 0, int nPubTime = -1, bool bSelf
243265 _xtprintf (" 接受数据失败!\n " );
244266 return ;
245267 }
268+
269+ #if 1 == XENGINE_CRYPTION_DATA_ENABLE
270+ Cryption_Api_CryptDecodec (NULL , (XBYTE*)ptszMsgBuffer, &nLen, lpszCryptKey);
271+ #endif
246272 memset (&st_XMQProtocol, ' \0 ' , sizeof (XENGINE_PROTOCOL_XMQ));
247273 memcpy (&st_XMQProtocol, ptszMsgBuffer, sizeof (XENGINE_PROTOCOL_XMQ));
248274 BaseLib_Memory_FreeCStyle ((XPPMEM)&ptszMsgBuffer);
@@ -279,6 +305,9 @@ void MQ_PostEMail(LPCXSTR lpszMsgBuffer)
279305 memcpy (tszMsgBuffer + sizeof (XENGINE_PROTOCOLHDR), &st_XMQProtocol, sizeof (XENGINE_PROTOCOL_XMQ));
280306 memcpy (tszMsgBuffer + sizeof (XENGINE_PROTOCOLHDR) + sizeof (XENGINE_PROTOCOL_XMQ), lpszMsgBuffer, strlen (lpszMsgBuffer));
281307
308+ #if 1 == XENGINE_CRYPTION_DATA_ENABLE
309+ Cryption_Api_CryptEncodec (NULL , (XBYTE*)(tszMsgBuffer + sizeof (XENGINE_PROTOCOLHDR)), (int *)&st_ProtocolHdr.unPacketSize , lpszCryptKey);
310+ #endif
282311 if (!XClient_TCPSelect_SendMsg (m_Socket, tszMsgBuffer, nLen))
283312 {
284313 _xtprintf (" 发送投递失败!\n " );
@@ -293,6 +322,9 @@ void MQ_PostEMail(LPCXSTR lpszMsgBuffer)
293322 _xtprintf (" 接受数据失败!\n " );
294323 return ;
295324 }
325+ #if 1 == XENGINE_CRYPTION_DATA_ENABLE
326+ Cryption_Api_CryptDecodec (NULL , (XBYTE*)ptszMsgBuffer, &nLen, lpszCryptKey);
327+ #endif
296328 memset (&st_XMQProtocol, ' \0 ' , sizeof (XENGINE_PROTOCOL_XMQ));
297329 memcpy (&st_XMQProtocol, ptszMsgBuffer, sizeof (XENGINE_PROTOCOL_XMQ));
298330 BaseLib_Memory_FreeCStyle ((XPPMEM)&ptszMsgBuffer);
@@ -323,6 +355,9 @@ void MQ_Get(int nType = 0)
323355 memcpy (tszMsgBuffer, &st_ProtocolHdr, sizeof (XENGINE_PROTOCOLHDR));
324356 memcpy (tszMsgBuffer + sizeof (XENGINE_PROTOCOLHDR), &st_XMQProtocol, sizeof (XENGINE_PROTOCOL_XMQ));
325357
358+ #if 1 == XENGINE_CRYPTION_DATA_ENABLE
359+ Cryption_Api_CryptEncodec (NULL , (XBYTE*)(tszMsgBuffer + sizeof (XENGINE_PROTOCOLHDR)), (int *)&st_ProtocolHdr.unPacketSize , lpszCryptKey);
360+ #endif
326361 if (!XClient_TCPSelect_SendMsg (m_Socket, tszMsgBuffer, nLen))
327362 {
328363 _xtprintf (" 发送投递失败!\n " );
@@ -338,6 +373,9 @@ void MQ_Get(int nType = 0)
338373 memset (&st_XMQProtocol, ' \0 ' , sizeof (XENGINE_PROTOCOL_XMQ));
339374 if (XClient_TCPSelect_RecvPkt (m_Socket, &ptszMsgBuffer, &nLen, &st_ProtocolHdr))
340375 {
376+ #if 1 == XENGINE_CRYPTION_DATA_ENABLE
377+ Cryption_Api_CryptDecodec (NULL , (XBYTE*)ptszMsgBuffer, &nLen, lpszCryptKey);
378+ #endif
341379 memcpy (&st_XMQProtocol, ptszMsgBuffer, sizeof (XENGINE_PROTOCOL_XMQ));
342380
343381 if (0 == st_ProtocolHdr.wReserve )
@@ -395,6 +433,9 @@ void MQ_TimePublish()
395433 memcpy (tszMsgBuffer + sizeof (XENGINE_PROTOCOLHDR), &st_XMQProtocol, sizeof (XENGINE_PROTOCOL_XMQ));
396434 memcpy (tszMsgBuffer + sizeof (XENGINE_PROTOCOLHDR) + sizeof (XENGINE_PROTOCOL_XMQ), lpszMsgBuffer, _tcsxlen (lpszMsgBuffer));
397435
436+ #if 1 == XENGINE_CRYPTION_DATA_ENABLE
437+ Cryption_Api_CryptEncodec (NULL , (XBYTE*)(tszMsgBuffer + sizeof (XENGINE_PROTOCOLHDR)), (int *)&st_ProtocolHdr.unPacketSize , lpszCryptKey);
438+ #endif
398439 if (!XClient_TCPSelect_SendMsg (m_Socket, tszMsgBuffer, nLen))
399440 {
400441 _xtprintf (" 发送投递失败!\n " );
@@ -417,6 +458,10 @@ void MQ_TimePublish()
417458 memset (tszMsgBuffer, ' \0 ' , sizeof (tszMsgBuffer));
418459 memset (&st_XMQProtocol, ' \0 ' , sizeof (XENGINE_PROTOCOL_XMQ));
419460
461+ #if 1 == XENGINE_CRYPTION_DATA_ENABLE
462+ Cryption_Api_CryptDecodec (NULL , (XBYTE*)ptszMsgBuffer, &nLen, lpszCryptKey);
463+ #endif
464+
420465 memcpy (&st_XMQProtocol, ptszMsgBuffer, sizeof (st_XMQProtocol));
421466
422467 _xtprintf (" 接受到通知消息,主题:%s,序列:%lld,长度:%d,内容:%s\n " , st_XMQProtocol.tszMQKey , st_XMQProtocol.nSerial , st_ProtocolHdr.unPacketSize - sizeof (XENGINE_PROTOCOL_XMQ), ptszMsgBuffer + sizeof (XENGINE_PROTOCOL_XMQ));
@@ -448,22 +493,27 @@ void MQ_GetNumber()
448493 memcpy (tszMsgBuffer, &st_ProtocolHdr, sizeof (XENGINE_PROTOCOLHDR));
449494 memcpy (tszMsgBuffer + sizeof (XENGINE_PROTOCOLHDR), &st_XMQProtocol, sizeof (XENGINE_PROTOCOL_XMQ));
450495
496+ #if 1 == XENGINE_CRYPTION_DATA_ENABLE
497+ Cryption_Api_CryptEncodec (NULL , (XBYTE*)(tszMsgBuffer + sizeof (XENGINE_PROTOCOLHDR)), (int *)&st_ProtocolHdr.unPacketSize , lpszCryptKey);
498+ #endif
451499 if (!XClient_TCPSelect_SendMsg (m_Socket, tszMsgBuffer, nLen))
452500 {
453501 _xtprintf (" 发送投递失败!\n " );
454502 return ;
455503 }
456504
457- nLen = 2048 ;
458- memset (tszMsgBuffer, ' \0 ' , sizeof (tszMsgBuffer));
459- if (XClient_TCPSelect_RecvMsg (m_Socket, tszMsgBuffer, &nLen))
505+ nLen = 0 ;
506+ XCHAR* ptszMsgBuffer = NULL ;
507+ memset (&st_ProtocolHdr, ' \0 ' , sizeof (XENGINE_PROTOCOLHDR));
508+
509+ if (XClient_TCPSelect_RecvPkt (m_Socket, &ptszMsgBuffer, &nLen, &st_ProtocolHdr))
460510 {
461- XENGINE_MQNUMBER st_MQNumber;
462- memset (&st_ProtocolHdr, ' \0 ' , sizeof (XENGINE_PROTOCOLHDR));
463- memset (&st_MQNumber, ' \0 ' , sizeof (XENGINE_MQNUMBER));
511+ XENGINE_MQNUMBER st_MQNumber = {};
464512
465- memcpy (&st_ProtocolHdr, tszMsgBuffer, sizeof (XENGINE_PROTOCOLHDR));
466- memcpy (&st_MQNumber, tszMsgBuffer + sizeof (XENGINE_PROTOCOLHDR), sizeof (XENGINE_MQNUMBER));
513+ #if 1 == XENGINE_CRYPTION_DATA_ENABLE
514+ Cryption_Api_CryptDecodec (NULL , (XBYTE*)ptszMsgBuffer, &nLen, lpszCryptKey);
515+ #endif
516+ memcpy (&st_MQNumber, ptszMsgBuffer, sizeof (XENGINE_MQNUMBER));
467517
468518 if (0 == st_ProtocolHdr.wReserve )
469519 {
@@ -503,21 +553,26 @@ void MQ_BindTopic()
503553 memcpy (tszMsgBuffer, &st_ProtocolHdr, sizeof (XENGINE_PROTOCOLHDR));
504554 memcpy (tszMsgBuffer + sizeof (XENGINE_PROTOCOLHDR), &st_XMQProtocol, sizeof (XENGINE_PROTOCOL_XMQ));
505555
556+ #if 1 == XENGINE_CRYPTION_DATA_ENABLE
557+ Cryption_Api_CryptEncodec (NULL , (XBYTE*)(tszMsgBuffer + sizeof (XENGINE_PROTOCOLHDR)), (int *)&st_ProtocolHdr.unPacketSize , lpszCryptKey);
558+ #endif
506559 if (!XClient_TCPSelect_SendMsg (m_Socket, tszMsgBuffer, nLen))
507560 {
508561 _xtprintf (" 发送投递失败!\n " );
509562 return ;
510563 }
511564
512- nLen = 2048 ;
513- memset (tszMsgBuffer, ' \0 ' , sizeof (tszMsgBuffer));
514- if (XClient_TCPSelect_RecvMsg (m_Socket, tszMsgBuffer, &nLen))
565+ nLen = 0 ;
566+ XCHAR* ptszMsgBuffer = NULL ;
567+ memset (&st_ProtocolHdr, ' \0 ' , sizeof (XENGINE_PROTOCOLHDR));
568+ if (XClient_TCPSelect_RecvPkt (m_Socket, &ptszMsgBuffer, &nLen, &st_ProtocolHdr))
515569 {
516- memset (&st_ProtocolHdr, ' \0 ' , sizeof (XENGINE_PROTOCOLHDR));
517570 memset (&st_XMQProtocol, ' \0 ' , sizeof (XENGINE_PROTOCOL_XMQ));
518571
519- memcpy (&st_ProtocolHdr, tszMsgBuffer, sizeof (XENGINE_PROTOCOLHDR));
520- memcpy (&st_XMQProtocol, tszMsgBuffer + sizeof (XENGINE_PROTOCOLHDR), sizeof (XENGINE_PROTOCOL_XMQ));
572+ #if 1 == XENGINE_CRYPTION_DATA_ENABLE
573+ Cryption_Api_CryptDecodec (NULL , (XBYTE*)ptszMsgBuffer, &nLen, lpszCryptKey);
574+ #endif
575+ memcpy (&st_XMQProtocol, ptszMsgBuffer, sizeof (XENGINE_PROTOCOL_XMQ));
521576
522577 if (0 == st_ProtocolHdr.wReserve )
523578 {
@@ -556,6 +611,9 @@ void MQ_DeleteTopic()
556611 memcpy (tszMsgBuffer, &st_ProtocolHdr, sizeof (XENGINE_PROTOCOLHDR));
557612 memcpy (tszMsgBuffer + sizeof (XENGINE_PROTOCOLHDR), &st_XMQProtocol, sizeof (XENGINE_PROTOCOL_XMQ));
558613
614+ #if 1 == XENGINE_CRYPTION_DATA_ENABLE
615+ Cryption_Api_CryptEncodec (NULL , (XBYTE*)(tszMsgBuffer + sizeof (XENGINE_PROTOCOLHDR)), (int *)&st_ProtocolHdr.unPacketSize , lpszCryptKey);
616+ #endif
559617 if (!XClient_TCPSelect_SendMsg (m_Socket, tszMsgBuffer, nLen))
560618 {
561619 _xtprintf (" 发送投递失败!\n " );
0 commit comments