我已成功創建了桌面共享解決方案,其中RDPViewer連接到RDPSession。這一切都很好。然而,現在,我試圖讓相反的工作:使用RDPViewer的StartReverseConnectListener方法和RDPSession的ConnectToClient方法(其中會話端將連接到查看器端以解決NAT /防火牆問題)。我已經按照在http://msdn.microsoft.com/en-us/library/windows/desktop/aa373359%28v=vs.85%29.aspx列出的步驟,主要是:RDPSession ConnectToClient意外終止
觀衆通過調用 StartReverseConnectListener方法,傳遞NULL爲 bstrConnectionString,bstrUserName和bstrPassword參數獲得其連接字符串。
觀看者通過調用 StartReverseConnectListener方法,傳遞NULL爲用於 bstrConnectionString,bstrUserName和bstrPassword參數 pbstrReverseConnectString參數有效值的發起反向連接偵聽器。
查看器將步驟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進行連接(我實際上保存在字符串到一個文件中,然後裝它的RDPSession側):
session.ConnectToClient(reverseConnectString);
(步驟3,見上文)
當我執行該方法,RDPViewer側斷開與1798的錯誤,其中,根據http://msdn.microsoft.com/en-us/library/aa373802%28VS.85%29.aspx,是指:
ServerCer tificateUnpackErr 1798
無法解壓服務器證書。
我覺得我失去了一些明顯的東西,但我不知道是什麼。
有什麼建議嗎?
謝謝!
謝謝,喬恩!你是對的文檔。一旦我使用由創建的客戶端/查看器邀請來調用ConnectToClient,由於使用服務器/主機的連接字符串_調用StartReverseConnectListener(而不是嘗試僅使用客戶端/查看器自己的邀請進行連接),它開始工作。那是我失蹤的關鍵。實際連接似乎需要更長的時間(差不多30秒),但它正在連接,我可以一起移動項目。再次感謝! – basiphobe 2012-04-16 20:58:50
感謝代碼喬恩 - 有一件事我想添加到您的解決方案的第3行,它應該有一個額外的行: IRDPSRAPIInvitation Invitation = session.Invitations.CreateInvitation(null,「My Group Name」, 「12345」,1); string hostConnString = Invitation.ConnectionString; 謝謝! – XikiryoX 2012-10-12 04:53:18