改造一:去掉 httpServer
tightvnc server 自带了一个httpServer,用于提供web访问。但是查看端需要安装java插件,然而我们并不需要该部分功能,精简掉它,可以适当降低程序资源占用和可执行文件大小。
准备环境:
VS2015 编译原版 tightvnc 2.8.27 源码
修改CPP文件:tightvnc-2.8.23-gpl vnserver-appTvnServer.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 vnserver-appTvnServer.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;
如下图所示:
修改后编译运行,不论是否有用户连接,始终只会存在一个进程。如下图所示:
应用程序模式:
服务模式: