【问题标题】:How to implement a protocol如何实现一个协议
【发布时间】:2010-11-17 09:10:16
【问题描述】:

是否有任何开源桌面共享协议?如果有,它们是什么?谁能告诉我为了实现一个协议我会知道什么,例如,如果我想编写一个桌面共享协议,我需要知道什么以及我应该从哪里开始。(首选语言 Java、C++ 和 C#)

谢谢!!

【问题讨论】:

  • 您能否详细说明“桌面共享协议”的含义..?例如,您的意思是类似于 Microsoft 的远程桌面 (RDP) 还是 XWindows?
  • 与 TeamViewer、VNC 一起使用的协议...

标签: c# java c++ protocols


【解决方案1】:

RFB是VNC应用中使用的协议,是一个开放的规范。

协议只是联网应用程序“同意”使用的一种语言。也就是说,由于连接的两端都在说同一种语言(这意味着它们知道通信中的字节意味着什么),它们能够相互发送有意义的信息并解释它们接收到的信息。

因此,在实施协议之前您应该做的第一件事就是学习和理解它。通常(并且总是在开放规范的情况下)会有一个解释协议和所有细节的文档。例如,RFB 协议的规范可以在here 中找到。

阅读并实现一个可以理解 RFB 的程序,您将创建一个 RFB 实现。

至于首选语言位:协议并没有规定协议是用什么语言实现的,只是通信发生的方式,所以你可以用任何你想要的语言来实现它。

【讨论】:

  • 协议可能没有强制要求,但还有其他实际问题:远程桌面服务器必须捕获完整的桌面,这在所有语言中可能都不可能。跨度>
【解决方案2】:

VNC协议(*)有很多开源实现,实际上微软RDP协议也有一些开源实现。

协议实际上不能是“开源的”——它们可以是“开放的”,如“规范是免费公开的”,它们可以是“开源兼容的”,如“如果你以开源方式实现协议”程序我们不会确定您是否会添加”,但通常“开源”意味着您可以更改源代码并且更改协议不会真正有益,因为您将无法互操作,对吗?

对于 Microsoft RDP 开源客户端,请查看 rdesktopxrdp 项目正在 X11 显示协议之上实现服务器端。 VNC 实现是一毛钱,但对于初学者,你可能想看看 tightvncrealvnc

(*) 实际上 RFB 是在 VNC 兼容客户端中使用的协议,正如 Paul Ruane 所指出的,VNC 是原始软件套件的名称,也用作实现 RFB 并采用与原始 VNC 客户端相同的网络语义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多