RDPSession ConnectToClient意外终止

本文关键字:终止 意外 ConnectToClient RDPSession | 更新日期: 2023-09-27 18:28:14

我已经成功创建了一个桌面共享解决方案,其中RDPViewer连接到RDPSession。一切都很顺利。然而,现在我正试图获得相反的效果:使用RDPViewer的StartReverseConnectListener方法和RDPSession的ConnectToClient方法(其中会话端将连接到查看器端以解决NAT/防火墙问题)。我遵循了中概述的步骤http://msdn.microsoft.com/en-us/library/windows/desktop/aa373359%28v=vs.85%29.aspx,主要:

  1. 查看器通过调用StartReverseConnectListener方法,为bstrConnectionString、bstrUserName和bstrPassword参数。

  2. 查看器通过调用StartReverseConnectListener方法,为pbstrReverseConnectString参数和bstrConnectionString、bstrUserName和bstrPassword参数。

  3. 查看器将在步骤1中获得的连接字符串发送到共享者。

使用C#2010,我在RDPSession端完成了以下操作:

RDPSession session = new RDPSession();
session.Open();
session.Invitations.CreateInvitation(null, "test", "12345", 1);

然后,在RDPViewer方面,我完成了:

string reverseConnectString = axRDPViewer1.StartReverseConnectListener(null, null, null);

(上文第1步)

axRDPViewer1.StartReverseConnectListener(reverseConnectString, "test", "12345");

(上文第2步)

然后,回到RDPSession端,我尝试使用从查看器中获得的reverseConnectString进行连接(我实际上将字符串保存到一个文件中,然后在RDPSSession端加载它):

session.ConnectToClient(reverseConnectString);

(上述第3步)

一旦我执行这个方法,RDPViewer端就会断开连接,并出现1798错误,根据http://msdn.microsoft.com/en-us/library/aa373802%28VS.85%29.aspx,表示:

ServerCertificateUnpackErr 1798

无法解压缩服务器证书。

我觉得我错过了一些显而易见的东西,但我不知道是什么。

有什么建议吗?

谢谢!

RDPSession ConnectToClient意外终止

Microsoft文档中关于反向连接的内容都是错误的。以下是您需要做的(根据上面的代码改编):

RDP会话端:

RDPSession session = new RDPSession(); 
session.Open(); 
string hostConnString = session.Invitations.CreateInvitation(null, "My Group Name", "12345", 1);

RDPViewer端(注意hostConnString应该与在会话端检索到的值相同):

string viewerConnString = axRDPViewer1.StartReverseConnectListener(hostConnString, "My Name", "12345");

现在回到RDP会话端(注意,viewerConnString应该与从查看器端检索到的值相同):

session.ConnectToClient(viewerConnString); 

这就应该了。有几点需要注意。CreateInvitation中指定的组名称不需要与其他任何位置匹配。如果你的节目需要列举主持人发出的邀请,我想这只是一个参考。传递给StartReverseConnectListener的用户名也可以是您想要的任何名称。这可以在主机端通过查看IRDPSRAPIAttendee接口中的RemoteName属性来查询和使用。