2012-06-15 4 views
1

WinRT (Windows8 Release Preview) 작업 중입니다. 나는 웹 애플리케이션 (실제로 더 간단한 XMPP 클라이언트)을 가지고있다.StreamSocket을 사용하여 SSL로 업그레이드

주로 StreamSocket 클래스를 사용하여 Jabber 서버에 연결합니다. SSL을 사용하기 위해 이미 연결된 소켓을 업그레이드하려고 할 때 문제가 발생했습니다.

나는 그것을 구현하기 위해 StreamSocket.UpgradeToSslAsync을 사용합니다. 이 예외를 throw합니다.

예기치 않은 시간에 메서드가 불려갔습니다. (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

당신이 따라 ConnectAsync와 연결 시도 해 봤나에서 출시 후 XMPP 라이브러리 출시 될 예정이로 자신을 조달하려고? 소켓을 만드는 방법을 보여주고 문서의 설명 섹션에있는 단계를 구현하면 도움이됩니다. –

+0

네, 실제로 ConnectAsync를 MSDN에서 말하는대로 사용합니다. – zjalex

답변

1

Metro 용 XMPP 응용 프로그램에서 작업 중이므로 서버 연결 및 프로토콜 파서가 준비되었습니다.

3 개의 ManualResetEvents를 사용하여 보내기, 수신 및 상승이 충돌하지 않습니다. 또한 UpgradeToSslAsync가 자체 서명 된 인증서를 허용하지 않으므로주의해야합니다.이 경우 예외가 발생합니다.

난 정말 더 당신을 도와주고 싶어하지만 응용 프로그램이 가게

+0

감사합니다. 내 문제가 내 로컬 인증서로 인해 발생했다는 것을 의미합니까? 당신은 나에게 몇 가지 조언이나 핵심 단어를 줄 수 있습니까? – zjalex

+0

읽기 또는 쓰기가 진행 중이므로 예외가 발생합니다. 먼저 DataReader와 DataWriter를 닫습니다. 승격하려고 시도한 후에 유효하지 않은 인증서의 예외가 다르게 보입니다. – PaulFreund

+0

전에 UpgradeToSslAsync를 사용하면 Paul이 맞습니다. 수신 스레드를 시작하면 잘 작동합니다. 즉,이 기능이 작동 할 수 있음을 의미합니다. – zjalex

관련 문제