# 精简远程 **Repository Path**: bueryouth/simplify-remote ## Basic Information - **Project Name**: 精简远程 - **Description**: 精简版局域网远程工具 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-27 - **Last Updated**: 2026-05-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 远程桌面工具 (Remote Desktop Tool) 一个基于C语言开发的轻量级远程桌面控制解决方案,包含服务端(被控端)和客户端(控制端)。该工具支持通过Web浏览器或专用客户端进行远程控制,具有低延迟、高清晰度和易于部署的特点。 ## 功能特性 ### 服务端 (rdp_server.exe) - **Web-based 控制**: 通过HTTP协议提供服务,任何现代浏览器均可访问控制界面 - **屏幕捕获**: 使用GDI+技术捕获屏幕并编码为JPEG格式 - **输入注入**: 支持鼠标移动、点击(左键/右键)、滚轮滚动和键盘输入 - **自适应分辨率**: 自动适配不同屏幕尺寸 - **单文件部署**: 无需额外依赖,单个exe文件即可运行 - **实时状态显示**: 控制台显示连接状态和IP地址信息 ### 客户端 (rdp_client.exe) - **原生Windows应用**: 基于Win32 API开发的高性能客户端 - **TCP直连通信**: 直接TCP连接,减少网络开销 - **完整输入支持**: 支持鼠标所有操作和键盘输入(包括组合键) - **帧率显示**: 实时显示FPS、分辨率和帧数统计 - **窗口自适应**: 根据远程屏幕尺寸自动调整窗口大小 - **断线重连**: 连接断开时提供提示并安全退出 ## 系统要求 - **操作系统**: Windows 7 及以上版本 - **编译器**: MinGW-w64 或 Microsoft Visual Studio - **依赖库**: - ws2_32.lib (Winsock) - gdi32.lib (GDI) - user32.lib (用户界面) - gdiplus.lib (GDI+) - ole32.lib, uuid.lib (COM支持) ## 编译说明 ### 方法一:使用构建脚本(推荐) 双击运行 `build.bat`,脚本会自动检测可用的编译器并完成编译: ```bash build.bat ``` ### 方法二:手动编译 #### 使用 MinGW-w64: ```bash # 编译资源文件 windres resource.rc -O coff -o resource.o # 编译服务端 g++ -std=c++17 -O2 -s -static -static-libgcc -static-libstdc++ -o rdp_server.exe server.c resource.o -lws2_32 -lgdi32 -luser32 -lgdiplus -lole32 -luuid # 编译客户端 gcc -O2 -s -o rdp_client.exe client.c -lws2_32 -lgdi32 -luser32 ``` #### 使用 MSVC: ```bash # 编译服务端 cl.exe /nologo /O2 /MT /W3 /Fe:rdp_server.exe server.c /link user32.lib gdi32.lib ws2_32.lib ole32.lib windowscodecs.lib # 编译客户端 cl.exe /nologo /O2 /MT /W3 /Fe:rdp_client.exe client.c /link user32.lib gdi32.lib ws2_32.lib ``` ## 使用方法 ### 方式一:Web浏览器控制(推荐) 1. **启动服务端**: ```bash rdp_server.exe ``` 2. **获取访问地址**: - 程序启动后会显示本机IP地址和端口号(默认9527) - 例如: `http://192.168.1.100:9527` 3. **浏览器访问**: - 在任意设备的浏览器中打开上述地址 - 即可看到远程屏幕并进行控制 ### 方式二:专用客户端控制 1. **启动服务端**: ```bash rdp_server.exe ``` 2. **启动客户端**: ```bash # 连接到指定IP(默认端口9527) rdp_client.exe 192.168.1.100 # 连接到指定IP和端口 rdp_client.exe 192.168.1.100:9527 ``` 3. **开始控制**: - 客户端窗口将显示远程屏幕 - 支持完整的鼠标和键盘操作 ## 技术架构 ### 通信协议 - **服务端**: HTTP协议 + JPEG图像流 + URL参数输入指令 - **客户端**: TCP套接字 + 自定义二进制协议 ### 数据包类型 | 类型 | 值 | 描述 | |------|-----|------| | PKT_SCREEN_FRAME | 0x01 | 屏幕帧数据 | | PKT_MOUSE_MOVE | 0x10 | 鼠标移动 | | PKT_MOUSE_DOWN | 0x11 | 鼠标按下 | | PKT_MOUSE_UP | 0x12 | 鼠标释放 | | PKT_MOUSE_WHEEL | 0x13 | 鼠标滚轮 | | PKT_KEY_DOWN | 0x20 | 键盘按下 | | PKT_KEY_UP | 0x21 | 键盘释放 | | PKT_SCREEN_SIZE | 0x30 | 屏幕尺寸信息 | ### 性能优化 - **JPEG压缩**: 质量等级50,平衡清晰度和带宽 - **捕获间隔**: 100ms刷新率(约10 FPS) - **线程分离**: 屏幕捕获和HTTP服务独立线程 - **临界区保护**: 多线程数据安全访问 ## 注意事项 1. **防火墙设置**: 确保端口9527未被防火墙阻止 2. **权限要求**: 需要管理员权限才能注入键盘鼠标事件 3. **网络环境**: 建议在局域网内使用以获得最佳性能 4. **安全性**: 当前版本无加密和认证机制,请勿在公网直接使用 5. **多连接**: Web版支持多浏览器同时连接,客户端版仅支持单连接 ## 项目结构 ``` 远程桌面/ ├── common.h # 公共头文件和数据结构定义 ├── server.c # 服务端源代码(Web版) ├── client.c # 客户端源代码(原生版) ├── resource.rc # 资源文件(图标等) ├── build.bat # 自动化构建脚本 ├── rdp_server.exe # 编译后的服务端程序 ├── rdp_client.exe # 编译后的客户端程序 └── README.md # 项目说明文档 ``` ## 许可证 本项目仅供学习和个人使用。如需商业应用,请自行评估安全性和合规性。 ## 开发者 使用C语言开发,充分利用Windows原生API实现高性能远程控制。