From c62599c30ff6fc052143357076441498c8a01af1 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 31 Jan 2023 17:03:59 +0800 Subject: [PATCH 1/9] modify:tunnel client proxy to clientex --- .../XEngine_ServiceApp/XEngine_Hdr.h | 2 + .../XEngine_ServiceApp/XEngine_ServiceApp.cpp | 9 ++++ .../XEngine_ServiceApp/XEngine_TunnelTask.cpp | 51 ++++++++++--------- .../XEngine_ServiceApp/XEngine_TunnelTask.h | 2 +- 4 files changed, 39 insertions(+), 25 deletions(-) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h b/XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h index 20646d5..95a77af 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h @@ -79,6 +79,7 @@ extern XHANDLE xhSocksHeart; //Tunnel服务器 extern XHANDLE xhTunnelSocket; extern XHANDLE xhTunnelHeart; +extern XHANDLE xhTunnelClient; //Forward服务器 extern XHANDLE xhForwardSocket; extern XHANDLE xhForwardHeart; @@ -100,6 +101,7 @@ typedef struct { TCHAR tszIPAddr[128]; ENUM_RFCCOMPONENTS_PROXY_STATUS enStatus; + XNETHANDLE xhClient; SOCKET hSocket; BOOL bClose; }PROXYPROTOCOL_CLIENTINFO; diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp index f7eff23..8d3d619 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp @@ -8,6 +8,7 @@ XHANDLE xhSocksHeart = NULL; XHANDLE xhTunnelSocket = NULL; XHANDLE xhTunnelHeart = NULL; +XHANDLE xhTunnelClient = NULL; XHANDLE xhForwardSocket = NULL; XHANDLE xhForwardHeart = NULL; @@ -193,6 +194,14 @@ int main(int argc, char** argv) XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,启动Tunnel网络服务器成功,Tunnel端口:%d,IO:%d"), st_ServiceConfig.nTunnelPort, st_ServiceConfig.st_XMax.nIOThread); NetCore_TCPXCore_RegisterCallBackEx(xhTunnelSocket, Network_Callback_TunnelLogin, Network_Callback_TunnelRecv, Network_Callback_TunnelLeave); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,注册Tunnel网络事件成功")); + //客户端 + xhTunnelClient = XClient_TCPSelect_StartEx(XEngine_Tunnel_CBRecv); + if (NULL == xhTunnelClient) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动Tunnel客户端服务失败,错误:%lX"), XClient_GetLastError()); + goto XENGINE_SERVICEAPP_EXIT; + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,启动Tunnel客户端服务成功")); } else { diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp index 62531cc..cf2107d 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp @@ -95,7 +95,7 @@ BOOL XEngine_TunnelTask_Handle(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in _tcscpy(tszConnectAddr, ppszListAddr[0]); //随便选择一个IP地址 BaseLib_OperatorMemory_Free((XPPPMEM)&ppszListAddr, nListCount); } - if (!XClient_TCPSelect_Create(&st_ProxyClient.hSocket, tszConnectAddr, nIPPort, 1)) + if (!XClient_TCPSelect_InsertEx(xhTunnelClient, tszConnectAddr, nIPPort, &st_ProxyClient.xhClient)) { ProxyProtocol_TunnelCore_Packet(tszMsgBuffer, &nLen, 500); XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nLen, XENGINE_CLIENT_NETTYPE_TUNNEL); @@ -106,18 +106,16 @@ BOOL XEngine_TunnelTask_Handle(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in st_ProxyClient.enStatus = ENUM_RFCCOMPONENTS_PROXY_STATUS_FORWARD; _tcscpy(st_ProxyClient.tszIPAddr, lpszClientAddr); ProxyProtocol_TunnelCore_SetInfo(lpszClientAddr, &st_ProxyClient, sizeof(PROXYPROTOCOL_CLIENTINFO)); - //启动线程 - std::thread pSTDThread(XEngine_TunnelTask_Thread, lpszClientAddr, st_ProxyClient.hSocket); - pSTDThread.detach(); //判断是代理还是非代理协议 if (bProxy) { + //客户端->代理服务->客户端 ProxyProtocol_TunnelCore_Packet(tszMsgBuffer, &nLen); XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nLen, XENGINE_CLIENT_NETTYPE_TUNNEL); } else { - //非代理协议直接发送数据 + //非代理协议直接发送数据,客户端->代理服务->服务器 XClient_TCPSelect_SendMsg(st_ProxyClient.hSocket, lpszMsgBuffer, nMsgLen); } XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("Tunnel客户端:%s,创建隧道代理服务成功,连接到服务器:%s:%d,代理模式:%s"), lpszClientAddr, tszConnectAddr, nIPPort, bProxy ? "代理" : "直连"); @@ -129,29 +127,34 @@ BOOL XEngine_TunnelTask_Handle(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in } return TRUE; } -XHTHREAD CALLBACK XEngine_TunnelTask_Thread(LPCTSTR lpszClientAddr, SOCKET hSocket) -{ - TCHAR tszMsgBuffer[4096]; - TCHAR tszClientAddr[128]; - - memset(tszClientAddr, '\0', sizeof(tszClientAddr)); - _tcscpy(tszClientAddr, lpszClientAddr); - while (1) +void CALLBACK XEngine_Tunnel_CBRecv(XHANDLE xhToken, XNETHANDLE xhClient, SOCKET hSocket, ENUM_NETCLIENT_TCPEVENTS enTCPClientEvents, LPCSTR lpszMsgBuffer, int nLen, LPVOID lParam) +{ + BOOL bFound = FALSE; + int nListCount = 0; + PROXYPROTOCOL_CLIENTINFO** ppSt_ClientList; + ProxyProtocol_TunnelCore_GetList((XPPPMEM)&ppSt_ClientList, &nListCount); + for (int i = 0; i < nListCount; i++) { - int nMsgLen = 4096; - if (!XClient_TCPSelect_RecvMsg(hSocket, tszMsgBuffer, &nMsgLen)) - { - break; - } - if (!XEngine_Network_Send(tszClientAddr, tszMsgBuffer, nMsgLen, XENGINE_CLIENT_NETTYPE_TUNNEL)) + if (xhClient == ppSt_ClientList[i]->xhClient) { + if (ENUM_XENGINE_XCLIENT_SOCKET_TCP_EVENT_RECV == enTCPClientEvents) + { + if (!XEngine_Network_Send(ppSt_ClientList[i]->tszIPAddr, lpszMsgBuffer, nLen, XENGINE_CLIENT_NETTYPE_TUNNEL)) + { + XClient_TCPSelect_DeleteEx(xhToken, xhClient); + SocketOpt_HeartBeat_ForceOutAddrEx(xhTunnelHeart, ppSt_ClientList[i]->tszIPAddr); + } + } + else if (ENUM_XENGINE_XCLIENT_SOCKET_TCP_EVENT_CLOSE == enTCPClientEvents) + { + //退出处理 + XClient_TCPSelect_DeleteEx(xhToken, xhClient); + SocketOpt_HeartBeat_ForceOutAddrEx(xhTunnelHeart, ppSt_ClientList[i]->tszIPAddr); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("Tunnel客户端:%s,离开服务器,客户端主动断开"), ppSt_ClientList[i]->tszIPAddr); + } break; } } - //退出处理 - XClient_TCPSelect_Close(hSocket); - SocketOpt_HeartBeat_ForceOutAddrEx(xhTunnelHeart, tszClientAddr); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("Tunnel客户端:%s,离开服务器,客户端主动断开"), tszClientAddr); - return 0; + BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_ClientList, nListCount); } \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.h b/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.h index e143428..fd8b66d 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.h @@ -12,4 +12,4 @@ *********************************************************************/ //任务处理相关函数,处理包的内容 BOOL XEngine_TunnelTask_Handle(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int nMsgLen); -XHTHREAD CALLBACK XEngine_TunnelTask_Thread(LPCTSTR lpszClientAddr, SOCKET hSocket); \ No newline at end of file +void CALLBACK XEngine_Tunnel_CBRecv(XHANDLE xhToken, XNETHANDLE xhClient, SOCKET hSocket, ENUM_NETCLIENT_TCPEVENTS enTCPClientEvents, LPCSTR lpszMsgBuffer, int nLen, LPVOID lParam); \ No newline at end of file -- Gitee From c5f6d670f8aeed4862a7ce9917985ddba03a3dbb Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 1 Feb 2023 10:40:39 +0800 Subject: [PATCH 2/9] fixed:client close does not free client --- .../XEngine_ServiceApp/XEngine_Network.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp index 71ed7ce..3112bb7 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp @@ -133,6 +133,19 @@ void XEngine_Network_Close(LPCTSTR lpszClientAddr, int nIPProto, int nCloseType) NetCore_TCPXCore_CloseForClientEx(xhTunnelSocket, lpszClientAddr); SocketOpt_HeartBeat_DeleteAddrEx(xhTunnelHeart, lpszClientAddr); } + //释放客户端 + int nListCount = 0; + PROXYPROTOCOL_CLIENTINFO** ppSt_ClientList; + ProxyProtocol_TunnelCore_GetList((XPPPMEM)&ppSt_ClientList, &nListCount); + for (int i = 0; i < nListCount; i++) + { + if (0 == _tcsnicmp(lpszClientAddr, ppSt_ClientList[i]->tszIPAddr, _tcslen(lpszClientAddr))) + { + XClient_TCPSelect_DeleteEx(xhTunnelClient, ppSt_ClientList[i]->xhClient); + break; + } + } + BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_ClientList, nListCount); ProxyProtocol_TunnelCore_Delete(lpszClientAddr); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("Tunnel客户端:%s,离开服务器,离开类型;%d"), lpszClientAddr, nCloseType); } -- Gitee From d7deb14c0f0d759688ab1995a428d66bca4a467d Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 1 Feb 2023 10:41:44 +0800 Subject: [PATCH 3/9] fixed:tunnel forward data is incorrent --- XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp | 2 ++ XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp | 7 ++----- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp index 8d3d619..a0b256f 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp @@ -29,6 +29,7 @@ void ServiceApp_Stop(int signo) //销毁Tunnel资源 NetCore_TCPXCore_DestroyEx(xhTunnelSocket); SocketOpt_HeartBeat_DestoryEx(xhTunnelHeart); + XClient_TCPSelect_StopEx(xhTunnelClient); //销毁Forward资源 HelpComponents_Packets_Destory(xhForwardPacket); NetCore_TCPXCore_DestroyEx(xhForwardSocket); @@ -284,6 +285,7 @@ XENGINE_SERVICEAPP_EXIT: //销毁Tunnel资源 NetCore_TCPXCore_DestroyEx(xhTunnelSocket); SocketOpt_HeartBeat_DestoryEx(xhTunnelHeart); + XClient_TCPSelect_StopEx(xhTunnelClient); //销毁Forward资源 HelpComponents_Packets_Destory(xhForwardPacket); NetCore_TCPXCore_DestroyEx(xhForwardSocket); diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp index cf2107d..370c3af 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp @@ -116,21 +116,20 @@ BOOL XEngine_TunnelTask_Handle(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in else { //非代理协议直接发送数据,客户端->代理服务->服务器 - XClient_TCPSelect_SendMsg(st_ProxyClient.hSocket, lpszMsgBuffer, nMsgLen); + XClient_TCPSelect_SendEx(xhTunnelClient, st_ProxyClient.xhClient, lpszMsgBuffer, &nMsgLen); } XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("Tunnel客户端:%s,创建隧道代理服务成功,连接到服务器:%s:%d,代理模式:%s"), lpszClientAddr, tszConnectAddr, nIPPort, bProxy ? "代理" : "直连"); } else { //转发数据 - XClient_TCPSelect_SendMsg(st_ProxyClient.hSocket, lpszMsgBuffer, nMsgLen); + XClient_TCPSelect_SendEx(xhTunnelClient, st_ProxyClient.xhClient, lpszMsgBuffer, &nMsgLen); } return TRUE; } void CALLBACK XEngine_Tunnel_CBRecv(XHANDLE xhToken, XNETHANDLE xhClient, SOCKET hSocket, ENUM_NETCLIENT_TCPEVENTS enTCPClientEvents, LPCSTR lpszMsgBuffer, int nLen, LPVOID lParam) { - BOOL bFound = FALSE; int nListCount = 0; PROXYPROTOCOL_CLIENTINFO** ppSt_ClientList; ProxyProtocol_TunnelCore_GetList((XPPPMEM)&ppSt_ClientList, &nListCount); @@ -142,14 +141,12 @@ void CALLBACK XEngine_Tunnel_CBRecv(XHANDLE xhToken, XNETHANDLE xhClient, SOCKET { if (!XEngine_Network_Send(ppSt_ClientList[i]->tszIPAddr, lpszMsgBuffer, nLen, XENGINE_CLIENT_NETTYPE_TUNNEL)) { - XClient_TCPSelect_DeleteEx(xhToken, xhClient); SocketOpt_HeartBeat_ForceOutAddrEx(xhTunnelHeart, ppSt_ClientList[i]->tszIPAddr); } } else if (ENUM_XENGINE_XCLIENT_SOCKET_TCP_EVENT_CLOSE == enTCPClientEvents) { //退出处理 - XClient_TCPSelect_DeleteEx(xhToken, xhClient); SocketOpt_HeartBeat_ForceOutAddrEx(xhTunnelHeart, ppSt_ClientList[i]->tszIPAddr); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("Tunnel客户端:%s,离开服务器,客户端主动断开"), ppSt_ClientList[i]->tszIPAddr); } -- Gitee From d04c1b1da41d27df215ab60c7957fde5508de9ca Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 1 Feb 2023 11:39:39 +0800 Subject: [PATCH 4/9] fixed:close server is crashed --- XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp | 2 +- XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp | 4 ++-- XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp index 3112bb7..88ba6a7 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp @@ -136,7 +136,7 @@ void XEngine_Network_Close(LPCTSTR lpszClientAddr, int nIPProto, int nCloseType) //释放客户端 int nListCount = 0; PROXYPROTOCOL_CLIENTINFO** ppSt_ClientList; - ProxyProtocol_TunnelCore_GetList((XPPPMEM)&ppSt_ClientList, &nListCount); + ProxyProtocol_TunnelCore_GetList((XPPPMEM)&ppSt_ClientList, &nListCount, sizeof(PROXYPROTOCOL_CLIENTINFO)); for (int i = 0; i < nListCount; i++) { if (0 == _tcsnicmp(lpszClientAddr, ppSt_ClientList[i]->tszIPAddr, _tcslen(lpszClientAddr))) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp index a0b256f..85b7d78 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp @@ -31,7 +31,7 @@ void ServiceApp_Stop(int signo) SocketOpt_HeartBeat_DestoryEx(xhTunnelHeart); XClient_TCPSelect_StopEx(xhTunnelClient); //销毁Forward资源 - HelpComponents_Packets_Destory(xhForwardPacket); + HelpComponents_Datas_Destory(xhForwardPacket); NetCore_TCPXCore_DestroyEx(xhForwardSocket); SocketOpt_HeartBeat_DestoryEx(xhForwardHeart); ManagePool_Thread_NQDestroy(xhForwardPool); @@ -287,7 +287,7 @@ XENGINE_SERVICEAPP_EXIT: SocketOpt_HeartBeat_DestoryEx(xhTunnelHeart); XClient_TCPSelect_StopEx(xhTunnelClient); //销毁Forward资源 - HelpComponents_Packets_Destory(xhForwardPacket); + HelpComponents_Datas_Destory(xhForwardPacket); NetCore_TCPXCore_DestroyEx(xhForwardSocket); SocketOpt_HeartBeat_DestoryEx(xhForwardHeart); ManagePool_Thread_NQDestroy(xhForwardPool); diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp index 370c3af..ed6e9ac 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_TunnelTask.cpp @@ -132,7 +132,7 @@ void CALLBACK XEngine_Tunnel_CBRecv(XHANDLE xhToken, XNETHANDLE xhClient, SOCKET { int nListCount = 0; PROXYPROTOCOL_CLIENTINFO** ppSt_ClientList; - ProxyProtocol_TunnelCore_GetList((XPPPMEM)&ppSt_ClientList, &nListCount); + ProxyProtocol_TunnelCore_GetList((XPPPMEM)&ppSt_ClientList, &nListCount, sizeof(PROXYPROTOCOL_CLIENTINFO)); for (int i = 0; i < nListCount; i++) { if (xhClient == ppSt_ClientList[i]->xhClient) -- Gitee From a87010488f4899d0c8d05e6cd37d7f535ae46b60 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 1 Feb 2023 11:59:09 +0800 Subject: [PATCH 5/9] modify:socks proxy forward mode --- .../XEngine_ServiceApp/XEngine_Hdr.h | 3 +- .../XEngine_ServiceApp/XEngine_Network.cpp | 13 +++++ .../XEngine_ServiceApp/XEngine_ServiceApp.cpp | 11 +++++ .../XEngine_ServiceApp/XEngine_SocksTask.cpp | 49 +++++++++---------- .../XEngine_ServiceApp/XEngine_SocksTask.h | 2 +- 5 files changed, 50 insertions(+), 28 deletions(-) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h b/XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h index 95a77af..f0c77c9 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h @@ -76,6 +76,7 @@ extern XLOG xhLog; //Socks服务器 extern XHANDLE xhSocksSocket; extern XHANDLE xhSocksHeart; +extern XHANDLE xhSocksClient; //Tunnel服务器 extern XHANDLE xhTunnelSocket; extern XHANDLE xhTunnelHeart; @@ -102,8 +103,6 @@ typedef struct TCHAR tszIPAddr[128]; ENUM_RFCCOMPONENTS_PROXY_STATUS enStatus; XNETHANDLE xhClient; - SOCKET hSocket; - BOOL bClose; }PROXYPROTOCOL_CLIENTINFO; //连接库 diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp index 88ba6a7..fe8b972 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_Network.cpp @@ -115,6 +115,19 @@ void XEngine_Network_Close(LPCTSTR lpszClientAddr, int nIPProto, int nCloseType) SocketOpt_HeartBeat_DeleteAddrEx(xhSocksHeart, lpszClientAddr); NetCore_TCPXCore_CloseForClientEx(xhSocksSocket, lpszClientAddr); } + //释放客户端 + int nListCount = 0; + PROXYPROTOCOL_CLIENTINFO** ppSt_ClientList; + ProxyProtocol_SocksCore_GetList((XPPPMEM)&ppSt_ClientList, &nListCount, sizeof(PROXYPROTOCOL_CLIENTINFO)); + for (int i = 0; i < nListCount; i++) + { + if (0 == _tcsnicmp(lpszClientAddr, ppSt_ClientList[i]->tszIPAddr, _tcslen(lpszClientAddr))) + { + XClient_TCPSelect_DeleteEx(xhSocksClient, ppSt_ClientList[i]->xhClient); + break; + } + } + BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_ClientList, nListCount); ProxyProtocol_SocksCore_Delete(lpszClientAddr); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("SOCKS客户端:%s,离开服务器,离开类型;%d"), lpszClientAddr, nCloseType); } diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp index 85b7d78..c62b7cb 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp @@ -5,6 +5,7 @@ XLOG xhLog = NULL; XHANDLE xhSocksSocket = NULL; XHANDLE xhSocksHeart = NULL; +XHANDLE xhSocksClient = NULL; XHANDLE xhTunnelSocket = NULL; XHANDLE xhTunnelHeart = NULL; @@ -26,6 +27,7 @@ void ServiceApp_Stop(int signo) //销毁Socks资源 NetCore_TCPXCore_DestroyEx(xhSocksSocket); SocketOpt_HeartBeat_DestoryEx(xhSocksHeart); + XClient_TCPSelect_StopEx(xhSocksClient); //销毁Tunnel资源 NetCore_TCPXCore_DestroyEx(xhTunnelSocket); SocketOpt_HeartBeat_DestoryEx(xhTunnelHeart); @@ -162,6 +164,14 @@ int main(int argc, char** argv) //绑定网络事件 NetCore_TCPXCore_RegisterCallBackEx(xhSocksSocket, Network_Callback_SocksLogin, Network_Callback_SocksRecv, Network_Callback_SocksLeave); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,注册Socks网络事件成功")); + //客户端 + xhSocksClient = XClient_TCPSelect_StartEx(XEngine_Socks_CBRecv); + if (NULL == xhSocksClient) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动Socks客户端服务失败,错误:%lX"), XClient_GetLastError()); + goto XENGINE_SERVICEAPP_EXIT; + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,启动Socks客户端服务成功")); } else { @@ -282,6 +292,7 @@ XENGINE_SERVICEAPP_EXIT: //销毁Socks资源 NetCore_TCPXCore_DestroyEx(xhSocksSocket); SocketOpt_HeartBeat_DestoryEx(xhSocksHeart); + XClient_TCPSelect_StopEx(xhSocksClient); //销毁Tunnel资源 NetCore_TCPXCore_DestroyEx(xhTunnelSocket); SocketOpt_HeartBeat_DestoryEx(xhTunnelHeart); diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp index a2b6d44..b2bd8e1 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp @@ -127,7 +127,7 @@ BOOL XEngine_SocksTask_Handle(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int //连接类型,IP还是域名,没有IPV6环境.不好测试 if (ENUM_RFCCOMPONENTS_PROXYSOCKS_IPADDR_IPV4 == enIPType) { - if (!XClient_TCPSelect_Create(&st_ProxyClient.hSocket, tszClientAddr, nPort, 1)) + if (!XClient_TCPSelect_InsertEx(xhSocksClient, tszClientAddr, nPort)) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("SOCKS客户端:%s,创建客户端连接失败,连接到服务器:%s:%d,错误:%lX"), lpszClientAddr, tszClientAddr, nPort, ProxyProtocol_GetLastError()); return FALSE; @@ -161,7 +161,7 @@ BOOL XEngine_SocksTask_Handle(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int memset(tszClientAddr, '\0', sizeof(tszClientAddr)); _tcscpy(tszClientAddr, ppszListAddr[0]); //随便选择一个IP地址 BaseLib_OperatorMemory_Free((XPPPMEM)&ppszListAddr, nListCount); - if (!XClient_TCPSelect_Create(&st_ProxyClient.hSocket, tszClientAddr, nPort, 1)) + if (!XClient_TCPSelect_InsertEx(xhSocksClient, tszClientAddr, nPort)) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("SOCKS客户端:%s,创建客户端连接失败,连接到服务器:%s:%d,错误:%lX"), lpszClientAddr, tszClientAddr, nPort, ProxyProtocol_GetLastError()); return FALSE; @@ -172,9 +172,6 @@ BOOL XEngine_SocksTask_Handle(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int st_ProxyClient.enStatus = ENUM_RFCCOMPONENTS_PROXY_STATUS_FORWARD; _tcscpy(st_ProxyClient.tszIPAddr, lpszClientAddr); ProxyProtocol_SocksCore_SetInfo(lpszClientAddr, &st_ProxyClient, sizeof(PROXYPROTOCOL_CLIENTINFO)); - //创建转发线程 - std::thread pSTDThread(XEngine_SocksTask_Thread, lpszClientAddr, st_ProxyClient.hSocket); - pSTDThread.detach(); //回复结果 ProxyProtocol_SocksCore_HdrPacket(lpszClientAddr, tszMsgBuffer, &nLen, XENGINE_RFCCOMPONENT_PROXY_SOCKS_RESPONSE_SUCCESS); XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nLen, XENGINE_CLIENT_NETTYPE_SOCKS); @@ -187,7 +184,7 @@ BOOL XEngine_SocksTask_Handle(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int memset(&st_ProxyClient, '\0', sizeof(PROXYPROTOCOL_CLIENTINFO)); if (ProxyProtocol_SocksCore_GetInfo(lpszClientAddr, &st_ProxyClient)) { - XClient_TCPSelect_SendMsg(st_ProxyClient.hSocket, lpszMsgBuffer, nMsgLen); + XClient_TCPSelect_SendEx(xhSocksClient, st_ProxyClient.xhClient, lpszMsgBuffer, &nMsgLen); } else { @@ -196,29 +193,31 @@ BOOL XEngine_SocksTask_Handle(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int } return TRUE; } -XHTHREAD CALLBACK XEngine_SocksTask_Thread(LPCTSTR lpszClientAddr, SOCKET hSocket) -{ - TCHAR tszMsgBuffer[4096]; - TCHAR tszClientAddr[128]; - memset(tszClientAddr, '\0', sizeof(tszClientAddr)); - _tcscpy(tszClientAddr, lpszClientAddr); - - while (1) +void CALLBACK XEngine_Socks_CBRecv(XHANDLE xhToken, XNETHANDLE xhClient, SOCKET hSocket, ENUM_NETCLIENT_TCPEVENTS enTCPClientEvents, LPCSTR lpszMsgBuffer, int nLen, LPVOID lParam) +{ + int nListCount = 0; + PROXYPROTOCOL_CLIENTINFO** ppSt_ClientList; + ProxyProtocol_SocksCore_GetList((XPPPMEM)&ppSt_ClientList, &nListCount, sizeof(PROXYPROTOCOL_CLIENTINFO)); + for (int i = 0; i < nListCount; i++) { - int nMsgLen = 4096; - if (!XClient_TCPSelect_RecvMsg(hSocket, tszMsgBuffer, &nMsgLen)) - { - break; - } - if (!XEngine_Network_Send(tszClientAddr, tszMsgBuffer, nMsgLen, XENGINE_CLIENT_NETTYPE_SOCKS)) + if (xhClient == ppSt_ClientList[i]->xhClient) { + if (ENUM_XENGINE_XCLIENT_SOCKET_TCP_EVENT_RECV == enTCPClientEvents) + { + if (!XEngine_Network_Send(ppSt_ClientList[i]->tszIPAddr, lpszMsgBuffer, nLen, XENGINE_CLIENT_NETTYPE_SOCKS)) + { + SocketOpt_HeartBeat_ForceOutAddrEx(xhSocksHeart, ppSt_ClientList[i]->tszIPAddr); + } + } + else if (ENUM_XENGINE_XCLIENT_SOCKET_TCP_EVENT_CLOSE == enTCPClientEvents) + { + //退出处理 + SocketOpt_HeartBeat_ForceOutAddrEx(xhSocksHeart, ppSt_ClientList[i]->tszIPAddr); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("Socks客户端:%s,离开服务器,客户端主动断开"), ppSt_ClientList[i]->tszIPAddr); + } break; } } - //退出处理 - XClient_TCPSelect_Close(hSocket); - SocketOpt_HeartBeat_ForceOutAddrEx(xhSocksHeart, tszClientAddr); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("Socks客户端:%s,离开服务器,客户端主动断开"), tszClientAddr); - return 0; + BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_ClientList, nListCount); } \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.h b/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.h index 089b403..3185490 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.h @@ -12,4 +12,4 @@ *********************************************************************/ //任务处理相关函数,处理包的内容 BOOL XEngine_SocksTask_Handle(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int nMsgLen); -XHTHREAD CALLBACK XEngine_SocksTask_Thread(LPCTSTR lpszClientAddr, SOCKET hSocket); \ No newline at end of file +void CALLBACK XEngine_Socks_CBRecv(XHANDLE xhToken, XNETHANDLE xhClient, SOCKET hSocket, ENUM_NETCLIENT_TCPEVENTS enTCPClientEvents, LPCSTR lpszMsgBuffer, int nLen, LPVOID lParam); \ No newline at end of file -- Gitee From 7800d6dbc2704db83dadeab08a3c91f807907e11 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 2 Feb 2023 09:16:04 +0800 Subject: [PATCH 6/9] fixed:socks proxy forward crashed --- XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp index b2bd8e1..65511db 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_SocksTask.cpp @@ -161,7 +161,7 @@ BOOL XEngine_SocksTask_Handle(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int memset(tszClientAddr, '\0', sizeof(tszClientAddr)); _tcscpy(tszClientAddr, ppszListAddr[0]); //随便选择一个IP地址 BaseLib_OperatorMemory_Free((XPPPMEM)&ppszListAddr, nListCount); - if (!XClient_TCPSelect_InsertEx(xhSocksClient, tszClientAddr, nPort)) + if (!XClient_TCPSelect_InsertEx(xhSocksClient, tszClientAddr, nPort, &st_ProxyClient.xhClient)) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("SOCKS客户端:%s,创建客户端连接失败,连接到服务器:%s:%d,错误:%lX"), lpszClientAddr, tszClientAddr, nPort, ProxyProtocol_GetLastError()); return FALSE; -- Gitee From 2805ea7c894a6a7e9d3228de228b04b7f5c2f13c Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 2 Feb 2023 09:26:33 +0800 Subject: [PATCH 7/9] update:vscopy --- XEngine_Source/VSCopy-x64.bat | 5 +---- XEngine_Source/VSCopy-x86.bat | 5 +---- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/XEngine_Source/VSCopy-x64.bat b/XEngine_Source/VSCopy-x64.bat index d357065..b74c70f 100644 --- a/XEngine_Source/VSCopy-x64.bat +++ b/XEngine_Source/VSCopy-x64.bat @@ -16,7 +16,4 @@ copy /y "%XEngine_Lib64%\x64\XEngine_SystemSdk\XEngine_ProcFile.dll" "./" copy /y "%XEngine_Lib64%\x64\XEngine_SystemSdk\XEngine_SystemApi.dll" "./" copy /y "%XEngine_Lib64%\x64\XEngine_LibEx\libcrypto-3-x64.dll" "./" -copy /y "%XEngine_Lib64%\x64\XEngine_LibEx\libssl-3-x64.dll" "./" -copy /y "%XEngine_Lib64%\x64\XEngine_LibEx\libcurl.dll" "./" -copy /y "%XEngine_Lib64%\XEngine_LibEx\nghttp2.dll" "./" -copy /y "%XEngine_Lib64%\x64\XEngine_HelpComponents\zlib1.dll" "./" \ No newline at end of file +copy /y "%XEngine_Lib64%\x64\XEngine_LibEx\libssl-3-x64.dll" "./" \ No newline at end of file diff --git a/XEngine_Source/VSCopy-x86.bat b/XEngine_Source/VSCopy-x86.bat index fcfad85..28d01c6 100644 --- a/XEngine_Source/VSCopy-x86.bat +++ b/XEngine_Source/VSCopy-x86.bat @@ -16,7 +16,4 @@ copy /y "%XEngine_Lib32%\XEngine_SystemSdk\XEngine_ProcFile.dll" "./" copy /y "%XEngine_Lib32%\XEngine_SystemSdk\XEngine_SystemApi.dll" "./" copy /y "%XEngine_Lib32%\XEngine_LibEx\libcrypto-3.dll" "./" -copy /y "%XEngine_Lib32%\XEngine_LibEx\libssl-3.dll" "./" -copy /y "%XEngine_Lib32%\XEngine_LibEx\libcurl.dll" "./" -copy /y "%XEngine_Lib32%\XEngine_LibEx\nghttp2.dll" "./" -copy /y "%XEngine_Lib32%\XEngine_HelpComponents\zlib1.dll" "./" \ No newline at end of file +copy /y "%XEngine_Lib32%\XEngine_LibEx\libssl-3.dll" "./" \ No newline at end of file -- Gitee From 9990da01baa60ee6f5d0db194037ff9685dd8424 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 2 Feb 2023 09:27:35 +0800 Subject: [PATCH 8/9] update:readme and configure --- CHANGELOG | 12 ++++++++++++ README.en.md | 5 +++-- README.md | 8 +++++--- XEngine_Release/XEngine_Config/XEngine_Config.json | 5 +++-- 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 57506e0..1c3b59f 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,15 @@ +XEngine_ProxyServer V1.5.0.1001 + +优化:优化服务器性能和线程个数 +修改:tunnel和socks代理客户端使用了新的客户端函数 +修正:客户端关闭没有释放资源 +修正:关闭服务器崩溃 + +improved:server performance and thread number +modify:tunnel and socks proxy clients used to new client functions +fixed:client close does not free res +fixed:close server is crashed +====================================================================================== XEngine_ProxyServer V1.4.0.1001 更新:匹配XEngine 7.43版本 diff --git a/README.en.md b/README.en.md index d6ebc99..ec1ff5f 100644 --- a/README.en.md +++ b/README.en.md @@ -20,6 +20,7 @@ this software support following features 6. encrypt Communication(planning) 7. load balanc(planning) 8. custom cert proxy protocol(planning) +9. multilevel proxy(planning) ## install @@ -71,8 +72,8 @@ make FLAGS=CleanAll clear You can refer to the document under the docment directory. It contains API protocol and service description. ## Test Server Address -Address:app.xyry.org or 159.75.200.173 -Port:Socks5 5400,HTTP Tunnel 5401 +Address:app.xyry.org +Port:Socks5 5400,HTTP Tunnel 5401,Forward 5402 ## Participate in contribution diff --git a/README.md b/README.md index a61f3cc..59f97b4 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ c c++ Socks5 Proxy Service,HTTP Tunnel Proxy Service,tcp forward service 6. 加密通信(planning) 7. 负载均衡(planning) 8. 自定义证书代理协议(planning) +9. 多级代理(planning) ## 安装教程 @@ -71,8 +72,8 @@ make FLAGS=CleanAll 清理编译 你可以参考docment目录下的文档.里面包含了API协议和服务说明. ## 测试服务器 -地址:app.xyry.org 或者 159.75.200.173 -端口:Socks5 5400,HTTP Tunnel 5401 +地址:app.xyry.org +端口:Socks5 5400,HTTP Tunnel 5401,Forward 5402 ## 参与贡献 @@ -82,7 +83,8 @@ make FLAGS=CleanAll 清理编译 4. 新建 Pull Request ## 开发计划 -使用线程池转发数据而不是一对一的线程 +透传代理 +转发代理支持权限和确认 ## 关注我们 如果你觉得这个软件对你有帮助,请你给我们一个START吧 diff --git a/XEngine_Release/XEngine_Config/XEngine_Config.json b/XEngine_Release/XEngine_Config/XEngine_Config.json index c3d3d2e..90faf06 100644 --- a/XEngine_Release/XEngine_Config/XEngine_Config.json +++ b/XEngine_Release/XEngine_Config/XEngine_Config.json @@ -7,8 +7,8 @@ "XMax": { "nMaxClient": 10000, "nMaxQueue": 10000, - "nIOThread": 1, - "nForwardThread": 1 + "nIOThread": 4, + "nForwardThread": 4 }, "XTime": { "nTimeCheck": 3, @@ -27,6 +27,7 @@ "tszAuthFile": "./XEngine_Config/UserList.txt" }, "XVer": [ + "1.5.0.1001 Build20230202", "1.4.0.1001 Build20221111", "1.3.1.1001 Build20220804", "1.3.0.1001 Build20220617", -- Gitee From 85751467f906834b0553e0a69f359768df6b1a9f Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 2 Feb 2023 09:30:13 +0800 Subject: [PATCH 9/9] update:log format --- .../XEngine_ServiceApp/XEngine_ServiceApp.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp index c62b7cb..0a23ff9 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_ServiceApp.cpp @@ -168,10 +168,10 @@ int main(int argc, char** argv) xhSocksClient = XClient_TCPSelect_StartEx(XEngine_Socks_CBRecv); if (NULL == xhSocksClient) { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动Socks客户端服务失败,错误:%lX"), XClient_GetLastError()); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动Socks客户端服务失败,错误:%lX"), XClient_GetLastError()); goto XENGINE_SERVICEAPP_EXIT; } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,启动Socks客户端服务成功")); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,启动Socks客户端服务成功")); } else { @@ -209,10 +209,10 @@ int main(int argc, char** argv) xhTunnelClient = XClient_TCPSelect_StartEx(XEngine_Tunnel_CBRecv); if (NULL == xhTunnelClient) { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动Tunnel客户端服务失败,错误:%lX"), XClient_GetLastError()); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动Tunnel客户端服务失败,错误:%lX"), XClient_GetLastError()); goto XENGINE_SERVICEAPP_EXIT; } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,启动Tunnel客户端服务成功")); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,启动Tunnel客户端服务成功")); } else { @@ -225,10 +225,10 @@ int main(int argc, char** argv) xhForwardPacket = HelpComponents_Datas_Init(st_ServiceConfig.st_XMax.nMaxQueue, st_ServiceConfig.st_XMax.nForwardThread); if (NULL == xhForwardPacket) { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("初始化Forward组包器失败,错误:%lX"), Packets_GetLastError()); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("初始化Forward组包器失败,错误:%lX"), Packets_GetLastError()); goto XENGINE_SERVICEAPP_EXIT; } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,启动Forward组包器成功")); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,启动Forward组包器成功")); //启动心跳 if (st_ServiceConfig.st_XTime.nForwardTimeOut > 0) { @@ -268,10 +268,10 @@ int main(int argc, char** argv) xhForwardPool = ManagePool_Thread_NQCreate(&ppSt_ListParam, st_ServiceConfig.st_XMax.nForwardThread); if (NULL == xhForwardPool) { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动Forward线程池服务失败,错误:%lX"), ManagePool_GetLastError()); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动Forward线程池服务失败,错误:%lX"), ManagePool_GetLastError()); goto XENGINE_SERVICEAPP_EXIT; } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,启动Forward线程池服务成功,启动个数:%d"), st_ServiceConfig.st_XMax.nForwardThread); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,启动Forward线程池服务成功,启动个数:%d"), st_ServiceConfig.st_XMax.nForwardThread); } else { -- Gitee