【问题标题】:RDP protocol for c++C++ 的 RDP 协议
【发布时间】:2011-06-20 21:40:18
【问题描述】:

我正在寻找通过远程桌面连接连接到另一台计算机的代码,并检查连接是否成功。

我记录了数据包,发现有一个星系价值的数据包,所以我想知道那里是否有一些简单的代码。

【问题讨论】:

  • 你的问题根本没有意义。 RDP 是一种协议,是两个节点之间通信的一组规则。消息控制的处理通常由 OSI 模型第 4 层的 TCP 等协议处理。 RDP是一个应用层协议,它不需要担心连接等...
  • 嗯,在 TCP 之上有一个很大的堆栈(至少 TPKT、X.225 和 ROSE),RDP 并不直接位于 TCP 之上。如果您想使用 RDP 进行通信,则必须实现所有这些层(除了您的操作系统支持的层)

标签: c++ tcp connection protocols remote-desktop


【解决方案1】:

RDP 确实不是一件容易的事,该协议栈非常庞大,并且建立在 ITU OSI 协议之上,其中包括相当数量的 ASN.1/BER。

最好的选择是FreeRDP 中的代码。

【讨论】:

    【解决方案2】:

    一些术语:您想要一个“C++ 的 RDP 客户端库”。

    正如其他人所提到的,请查看“FreeRDP”和“rdesktop”项目。

    使用 FreeRDP,您将获得一套库(每个库都在做自己的事)。使用 rdesktop,您将获得一个客户端应用程序(您必须从中分解出 C 代码,并“构建”您的 C++ api)。

    如果这是一个新项目,我会选择 FreeRDP 而不是 rdesktop,因为它们已经为您的 C++ 接口提供了可用的库。

    【讨论】:

      【解决方案3】:

      您是否需要检查 RDP 服务器是否存在,但不需要进行身份验证?在这种情况下,您所需要的只是用于协商协议安全性的前几个数据包。您可以在 libfreerdp-core/nego.c 中找到 FreeRDP 中的代码。

      【讨论】:

        【解决方案4】:

        @Blanker1231:你应该看看rdesktop code,它在 c 中,但可以很容易地修改为在 C++ 代码中使用,你所要做的就是有效地桥接它们的 Struct Stream。

        此外,我多年前在 qt/c++ 中为一个 Rdp 7+ 实现工作过,所以最近只是为了好玩,我利用我所有的经验编写了一个 RDP 解析器和代码生成器,并在 @987654322 上开源了它@ 现在它很简单,我仍在努力让它变得更聪明。请注意,它不会产生一切。示例包括 demo.def,它在编译时将生成 ms-rdp 中使用的所有类 os ms-fscc @Blanker1231,如果您愿意,只需 fork 实现并开始在

        中推送内容

        【讨论】:

          猜你喜欢
          • 2011-05-27
          • 1970-01-01
          • 1970-01-01
          • 2012-03-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-25
          • 1970-01-01
          相关资源
          最近更新 更多