区分开退出主控端和被控端2个消息

在2015RemoteDlg.h添加宏CLIENT_EXIT_WITH_SERVER,用于控制ghost是否随Yama退出。
明确区分开退出被控端和退出主控端2个消息,只有发送退出被控端消息才会停止Socket客户端。
This commit is contained in:
yuanyuanxiang
2019-04-15 16:24:32 +08:00
parent ab7259edda
commit 953d298c1c
11 changed files with 87 additions and 24 deletions

View File

@@ -9,10 +9,15 @@
#include "KernelManager.h"
using namespace std;
// Զ<>̵<EFBFBD>ַ
char g_szServerIP[MAX_PATH] = {0};
unsigned short g_uPort = 0;
bool g_bExit = false;
bool g_bThreadExit = false;
// Ӧ<>ó<EFBFBD><C3B3><EFBFBD>״̬<D7B4><CCAC>1-<2D><><EFBFBD>ض<EFBFBD><D8B6>˳<EFBFBD> 2-<2D><><EFBFBD>ض<EFBFBD><D8B6>˳<EFBFBD><CBB3><EFBFBD>
BOOL g_bExit = 0;
// <20><><EFBFBD><EFBFBD><EFBFBD>߳<EFBFBD>״̬
BOOL g_bThreadExit = 0;
HINSTANCE g_hInstance = NULL;
DWORD WINAPI StartClient(LPVOID lParam);
@@ -60,10 +65,14 @@ int main(int argc, const char *argv[])
memcpy(g_szServerIP,szServerIP,strlen(szServerIP));
g_uPort = uPort;
HANDLE hThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)StartClient,NULL,0,NULL);
do{
g_bExit = 0;
HANDLE hThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)StartClient,NULL,0,NULL);
WaitForSingleObject(hThread, INFINITE);
CloseHandle(hThread);
}while (E_RUN == status && 1 != g_bExit);
WaitForSingleObject(hThread, INFINITE);
CloseHandle(hThread);
status = E_STOP;
CloseHandle(hMutex);
@@ -94,6 +103,7 @@ BOOL APIENTRY DllMain( HINSTANCE hInstance,
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ghost
extern "C" __declspec(dllexport) void TestRun(char* szServerIP,int uPort)
{
g_bExit = false;
memcpy(g_szServerIP,szServerIP,strlen(szServerIP));
g_uPort = uPort;
@@ -109,16 +119,19 @@ extern "C" __declspec(dllexport) void TestRun(char* szServerIP,int uPort)
// ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>
extern "C" __declspec(dllexport) void StopRun() { g_bExit = true; }
// <20>Ƿ<EFBFBD><C7B7>ɹ<EFBFBD>ֹͣ
extern "C" __declspec(dllexport) bool IsStoped() { return g_bThreadExit; }
// <20>Ƿ<EFBFBD><C7B7>˳<EFBFBD><CBB3>ͻ<EFBFBD><CDBB><EFBFBD>
extern "C" __declspec(dllexport) bool IsExit() { return 1 == g_bExit; }
#endif
DWORD WINAPI StartClient(LPVOID lParam)
{
IOCPClient *ClientObject = new IOCPClient();
g_bThreadExit = false;
while (!g_bExit)
{
DWORD dwTickCount = GetTickCount();