1

WinRT(Windows8リリースプレビュー)に取り組んでいます。私は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();
    }  

ヒントを教えてください。ありがとうございました。

4

1 に答える 1

1

Metro用のXMPPアプリケーションにも取り組んでおり、サーバー接続とプロトコルパーサーの準備ができています。

私は3つのManualResetEventsを使用しているので、Send、Receive、Elevateが衝突しません。UpgradeToSslAsyncは自己署名証明書を受け入れないため、注意が必要です。その場合、例外がスローされます。

私は本当にあなたをさらに助けたいのですが、私はこれで自分自身に資金を提供しようとしています、XMPPライブラリはアプリケーションがストアでリリースされた後にリリースされます

于 2012-06-17T17:46:09.623 に答える