我正在尝试将远程计算机桌面的实时订阅源流式传输到我的应用程序。为此,我使用面向连接的(TCP)套接字,捕获客户端计算机的帧并将其发送到服务器。
我每100毫秒发送一个帧(屏幕截图)(即10 FPS)。每帧大约145kb,这意味着我需要每秒发送1450kb(相当于1.4兆字节,每秒11兆位)。
我的互联网最高下载速度为每秒0.32兆位。因为我需要每秒发送11兆位数据,这意味着我的互联网速度比我需要的慢10.6兆。因此,通过我的计算,为了有效地流式传输桌面,我需要每帧大约4.5kb(4608b + 20b TCP头),这在现实系统中是现实的,不可能,即使只发送桌面的更新部分和压缩位图。
我不确定系统是否完全受上传速度的限制。我认为这是因为4.5kb是一个可笑的小尺寸。我可以使用类似的软件(Teamviewer,Join.me和Skype等软件)顺利地流式传输我的桌面,即使这些软件包使用的智能协议远远超过我(good question here),我也非常怀疑他们发送的是每帧/桌面更新4.5kb。
所以我的问题最终是;我的计算是否准确,为什么?我的目标是确定每个帧的适当大小,以便我可以努力达到该大小并计算不同速度连接的质量/间隔。我对任何对我的情况有帮助的评论/答案感兴趣,但我接受的答案将是回答我实际问题的答案。
答案 0 :(得分:1)
首先不要混淆位和字节,因为你的计算有点令人困惑。
第二,你只关注你发送的对象的大小,你忘记了数据包本身,它增加了一点大小,不要忘记你将忍受的TCP延迟。如果您的网络对发送流量敏感,我建议您升级它,或使用更好的压缩。
总而言之,我总是说:网络支持的带宽等于沿所需路径带宽最小的部分。
ex:10M => 100K => 1M ==> 10M(这里最高速度为100K)
答案 1 :(得分:0)
TCP客户端的最大发送速度是否完全由客户端计算机的上载速度
决定
这是一个毫无意义的问题。对于任何给定的连接,它们是相同的,它们都由它们之间最慢链接的速度决定。