我正在研究WinRT(Windows8 Release Preview)。我有一个Web应用程序(事实上,一个更简单的XMPP客户端)。
我主要使用StreamSocket类来连接Jabber服务器。它给了我一个良好的开端。但是当我尝试升级已连接的套接字以使用SSL时,我遇到了一个问题。
我使用StreamSocket.UpgradeToSslAsync来实现它。它抛出这样的异常
在意外时间调用了一个方法。 (HRESULT的例外情况: 0x8000000E)
我不知道为什么会这样。我做了所有的事情,如上面的链接。我已成功创建套接字连接。我可以从Jabber服务器接收一些xml节。 这是运行时的图片。![在此输入图像说明] [1]
您可以在new tab。
中查看图片当我单击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();
}
请给我一些提示。谢谢。
答案 0 :(得分:1)
我正在研究Metro的XMPP应用程序,服务器连接和协议解析器已准备就绪。
我正在使用三个ManualResetEvents,因此Send,Receive和Elevate不会发生冲突。另外要小心,因为UpgradeToSslAsync不接受自签名证书,在这种情况下会抛出异常。
我真的想进一步帮助你,但我尝试用这个来资助自己,XMPP库将在商店发布应用程序后发布