如果要通过任何更改来开发自己的远程协助/屏幕共享工具以包含在自己的CRM中,我应该去哪里?
我对沟通一无所知,但我想让自己参与这个想法。我的问题是,创建LogMeIn / CoPilot / etc产品的基本知识和基本结构是什么?
我记得乔尔(在几年前)在一个PodCast中谈到CoPilot时,他曾用一位出色的同伴来开发C++的整个协议(protocol)。
关于如何完成此操作的任何想法,或者是否有开放的API等待我?
最佳答案
请参阅标题为How VNC, Fog Creek Copilot and other remote control software works的文章。
我将在此根据博客文章的内容提供其他详细信息,但这是针对Fog Creek Copilot源代码的更具体的信息。所有这些数据都是通过查看源代码获得的。
基本上,Copilot不是用C++从头开始编写的,而是从GPL的TightVNC构建的。是的,这意味着还必须提供Copilot的主要来源。您可以获取Fog Creek copilot source code here。据我了解,您也可以根据该项目的源代码构建解决方案,只要您也将其设为GPL即可。
该项目分为Mac版本和Windows版本。 Mac版本内置于 objective-c 中,而Windows版本内置于Win32 C++(而非MFC)中。对于Windows版本,在VS 2008中有一个Helper解决方案,在VS 2008中有一个Host解决方案(主机是被帮助的人)。我认为他们没有使用Trolltech的Qt,因为它的链接很大,这很重要对于他们来说,将下载量保持在很小的水平,因为每个人都必须首先下载该文件,每个人都要帮助某个人,每个人每次都需要帮助。
没有x64或IA64配置,因此Windows上的所有代码仅作为x86进程运行。它可以通过WOW64在64位Windows上运行,就像其他任何32位进程可以使用的一样。
据我了解,大多数情况下,开发是通过在VM上运行的Host完成的。 Helper的开发已在其桌面上完成。
Copilot源代码使用boost 1.38和其他几个第三方库。这些库包括用于NAT遍历的STUNT,MatrixSSL,libntlm(用于Microsoft NTLM身份验证的库)和omnithread(线程和同步库)。
在大多数情况下,它使用bsd样式的套接字,但在boost::asio中也包含一些网络代码。这是有问题的,因为boost::asio 1.38中存在很多错误,这些错误已在boost 1.40中修复。该项目还有一个Windows钩子(Hook)dll,也可以钩住主机上的键盘,鼠标和其他Windows消息。
有一个 shell 项目,它与Windows shell 不同,但基本上包含3个二进制文件:主机,删除程序和hooks dll。它提取这些。
他们没有给出的是Reflector和网站的源代码,据我从projectaardvark.com上的一些博客文章中了解到,它们都在C#中,其他都在C++中。反射器的目的是帮助NAT穿越。顺便替换projectaardvark.com的新博客称为Air Traffic。
VNC从远程帧缓冲区协议(protocol)中删除。如果您有很多协议(protocol)经验,那么RFB协议(protocol)本身并不难。