我正在研究诸如Team Viewer之类的屏幕传输应用程序,任何办公桌的工作方式,并确定它们在非常低带宽的Internet连接中如何正常工作。
在学习的过程中,我遇到了屏幕共享应用程序任何办公桌。使用 xxHash 对图像进行哈希处理,并将图像字节数据及其哈希代码一起发送。
我在移动互联网上使用了网络速度监视器并启动了应用程序。
我反对多次在桌面上打开同一目录。除了第一个请求外,该应用程序不会向客户端发送任何数据。 我假设如果发现重复的图像哈希码,它只会将哈希码发送给客户端。
我的问题是这种方法如何可行,因为在客户端。我们需要将哈希码与图像字节数据一起存储在内存中。此应用如何提高内存效率。 还是他们有其他任何方式。
答案 0 :(得分:0)
如果图像仍然打开,则它仍在客户端的内存中。因此,唯一的开销就是哈希码,它很小。如果有的话,在您描述的场景中它是有效的。如果未存储哈希码,则将再次发送相同的图像(已经在内存中),从而浪费带宽并导致相关的性能问题。但是,由于保存了哈希,因此客户端只需从内存中的字节重绘相同的图像即可。
当然,当您关闭该图像时,与其关联的内存可能会在不久后释放。因此,如果您在一段时间后打开同一目录,则必须再次发送图像日期以及哈希码。
答案 1 :(得分:0)
听起来您似乎根本不了解屏幕共享的工作原理。例如,在Windows中,我们不检测屏幕缓冲区中的更改。相反,我们依靠Windows将屏幕区域标记为无效。
https://docs.microsoft.com/en-us/windows/desktop/gdi/the-update-region
您可能会注意到,启用屏幕共享后,Windows主题将从Aero降为基本主题。