使用 StreamSocket 升级到 SSL

本文关键字:SSL StreamSocket 使用 | 更新日期: 2023-09-27 18:37:22

我正在研究WinRT(Windows8 Release Preview)。我有一个Web应用程序(实际上,一个更简单的XMPP客户端)。

我主要使用 StreamSocket 类来连接 Jabber 服务器。这给了我一个良好的开端。但是当我尝试升级已连接的套接字以使用 SSL 时,我遇到了一个问题。

我使用 StreamSocket.UpgradeToSslAsync 来实现它。 它抛出这样的异常

在意外的时间调用了一个方法。(HRESULT的例外情况: 0x8000000E)

我不知道为什么会这样。我已经完成了上述链接的所有操作。我已经创建了连接成功的套接字。我可以从Jabber服务器接收一些xml节。这是它运行时的图片。![在此输入图像描述][1]

您可以在新选项卡中看到图片。

当我单击 UpToSSL 按钮时,它会崩溃并抛出上述异常。

以下是更简单的版本代码:

 // xmpp is my  CXMPP  client class
 private void StartTlsBtn_Click(object sender, RoutedEventArgs e)
 {
   xmpp.SendXml("<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls' />");            
 } 
 // it works fine, and i have got the reponse from server:
 //     <proceed xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>
 // next step i should upgrade my sockey connection to ssl
    private void UpSslBtn_Click(object sender, RoutedEventArgs e)
    {
      xmpp.UpToSsl();         
    }
    async public void UpToSsl()
    {
        SendEvent.WaitOne();
        SendEvent.Reset();
        // private StreamSocket ClientSock;
        await ClientSock.UpgradeToSslAsync(SocketProtectionLevel.Ssl, ClientSock.Information.RemoteHostName);
        isSsl = true;
        SendEvent.Set();
    }  

请给我一些提示。谢谢。

使用 StreamSocket 升级到 SSL

我也在为地铁开发XMPP应用程序,服务器连接和协议解析器已准备就绪。

我正在使用三个手动重置事件,因此发送、接收和提升不会发生冲突。还要小心,因为UpgradeToSslAsync不接受自签名证书,在这种情况下会引发异常。

我真的很想进一步帮助您,但我试图用这个为自己提供资金,XMPP 库将在商店中发布应用程序后发布