Skip to content

comely13/Re_exec

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

远程屏幕控制软件开发计划

2023-06-06 15:24:51

项目概述

您计划开发一个远程屏幕控制软件,功能包括屏幕锁定,屏幕控制,文件传输,屏幕色彩模式(黑白,彩色),显示帧率(60,100,144)等。您的开发语言为C++/Qt,计划在一个月内完成,且需要该软件在公网上运行。

项目架构

我们将采用MVC(Model-View-Controller)架构。

技术选型

  1. 屏幕捕获:Windows(DirectX或Windows Desktop Duplication API)、macOS(CoreGraphics API)、Linux(X11或Wayland的API)。

  2. 视频编码/解码:FFmpeg或者x264/x265,选择H.264或H.265作为编码格式。

  3. 网络传输:libuv或Boost.Asio,选择TCP或UDP作为传输协议是否采用RTP。

  4. 屏幕控制:模拟鼠标和键盘操作,Windows(SendInput函数)、macOS和Linux(XTest库)。

  5. 文件传输:FTP或者HTTP协议,或使用libuv或Boost.Asio实现自定义协议。

  6. 屏幕色彩模式和显示帧率:客户端进行控制,使用图形API如DirectX,OpenGL或Vulkan。

  7. 屏幕锁定:Windows(LockWorkStation函数)、macOS和Linux(各自的屏幕锁定函数)。

  8. 音频传输:操作系统提供的API来捕获音频,使用AAC等编码格式,然后通过网络发送到客户端。

开发计划

  1. 需求分析和设计(1-2周):确定需求、设计软件架构、选择技术和工具。

  2. 核心功能开发(4-6周):屏幕捕获、编码、网络传输、解码和显示,屏幕控制,文件传输。

  3. 附加功能开发(2-3周):屏幕色彩模式和显示帧率的控制,屏幕锁定功能,音频传输。

  4. 测试和调试(2-3周):详细测试所有功能,调试并修复找到的问题,进行用户接受测试,获取反馈。

  5. 优化和文档编写(2周):根据测试和反馈进行优化,编写用户手册和开发文档,准备发布。

公网运行注意事项

  1. 安全性:所有的网络通信都应该被加密,例如使用TLS协议。

  2. 性能和可靠性:处理网络延迟,丢包,带宽限制等问题,可能需要实现一些高级的网络特性,如拥塞控制,流量控制,以及丢包恢复等。

  3. 可访问性:考虑使用公网服务器来中继连接,或者使用NAT穿透技术。

数据包格式

我们将使用以下格式来设计我们的数据包:

Packet Start (2 bytes): 这个字段表示数据包的开始。我们将选择一个固定的值,如0x1234。

Packet Type (1 byte): 这个字段表示数据包的类型。我们将定义0x01为屏幕数据,0x02为文件数据,0x03为控制命令等。

Packet Length (2 bytes): 这个字段表示数据包的总长度(包括头部和载荷)。这个字段可以帮助接收端正确地解析数据包。

Timestamp (4 bytes): 这个字段表示数据包的发送时间。这可以帮助我们跟踪和调试网络延迟和其他问题。

Checksum (2 bytes): 这个字段是数据包的校验和。这可以帮助我们检测数据包在传输过程中是否被损坏。

Payload (Variable): 这个字段表示数据包的载荷,也就是实际的数据内容。载荷的格式和内容取决于数据包的类型。

Packet End (2 bytes): 这个字段表示数据包的结束。我们将选择一个固定的值,如0x4321。

这只是一个基本的设计,你可能需要根据你的具体需求和环境进行调整和优化。例如,你可能需要为不同类型的数据包定义不同的载荷格式。

传输协议

在我们的远程屏幕控制软件中,我们将使用TCP和UDP两种传输协议。

TCP(传输控制协议):TCP将用于传输需要可靠传输的数据,如文件传输和控制命令。

UDP(用户数据报协议):UDP将用于传输实时性更强,但可靠性要求不高的数据,如屏幕数据和音频数据。

在设计我们的软件时,我们需要根据不同的数据类型选择合适的传输协议。

总体而言,这个项目可能需要3-4个月的时间来完成。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published