改造一:去掉 httpServer
tightvnc server 自帶了一個httpServer,用於提供web訪問。但是查看端需要安裝java插件,然而我們並不需要該部分功能,精簡掉它,可以適當降低程序資源占用和可執行文件大小。
准備環境:
VS2015 編譯原版 tightvnc 2.8.27 源碼
修改CPP文件:tightvnc-2.8.23-gpl\tvnserver-app\TvnServer.cpp
行67,注釋掉:m_httpServer(0),
行132,注釋掉:restartHttpServer();
行143,注釋掉:stopHttpServer();
行198-行210,全部注釋掉;
行323-行339,注釋掉整個函數:void TvnServer::restartHttpServer()
行389-行402,注釋掉整個函數:void TvnServer::stopHttpServer()
修改頭文件:tightvnc-2.8.23-gpl\tvnserver-app\TvnServer.h
行38,注釋掉:#include "http-server-lib/HttpServer.h"
行145,注釋掉:void restartHttpServer();
行149,注釋掉:void stopHttpServer();
行191,注釋掉:HttpServer *m_httpServer;
編譯結果驗收
精簡后,通過 Release Win32 編譯,tightvnc server 體積由 1.43MB 縮小為 1.08MB,縮小了大概三分之一的大小,實際測試對現有功能無任何影響。
如下圖所示:
改造二:去掉控制進程
tightvnc server 無論是使用服務模式啟動還是普通進程模式啟動,都會自動啟動一個控制進程,服務模式運行參數為controlservice,進程模式運行參數則為controlapp,該控制進程用於創建托盤圖標,提供配置界面等功能。
由於我們的tightvnc server實際使用時已自動化配置了各項參數值,不需要通過界面去配置任何參數,故不需要該進程。
修改方法:
修改tvnserver-app中的源文件:TvnServerApplication.cpp,
行88,注釋掉:m_tvnControlRunner = new WsConfigRunner(&m_fileLogger);
行92,注釋掉:delete m_tvnControlRunner;
如下圖所示:
修改后編譯運行,不論是否有用戶連接,始終只會存在一個進程。如下圖所示:
應用程序模式:
服務模式: