2017-02-24 63 views
0

我使用OpenSSL 1.0.2j來開發桌面電子郵件客戶端應用程序,但沒有 問題。我將代碼從桌面複製到WinCE 5.0設備.NET CF 2.0。 連接SSL_connect()一直失敗,值爲5(SSL_ERROR_SYSCALL)。 對CE的GetLastError()的調用給我一個錯誤10038(WSAENOTSOCK套接字在非套接字上的操作)。 你有什麼建議嗎?什麼可能導致這個問題?WinCE 5.0上的SSL_connect()失敗

在此先感謝

下面的代碼:

 SSL_library_init() 
     OPENSSL_add_all_algorithms_noconf() 
     Dim sslCtx As IntPtr = SSL_CTX_new(SSLv23_client_method()) 
     Dim ssl_socket As IntPtr = SSL_new(sslCtx) 
     Dim sbioPtr As IntPtr = BIO_new_socket(mySocket.Handle, 0) 
     SSL_set_bio(ssl_socket, sbioPtr, sbioPtr) 

     Dim connOK As Integer = SSL_connect(ssl_socket) 
     If connOK = 1 Then 
      ..... 
     Else 
      MsgBox("OpenSSL's SSL_connect() failed") 
      Dim errcode As Integer = SSL_get_error(ssl_socket, connOK) 
       MsgBox("SSL Error: " + errcode.ToString) 
      If errcode = 5 Then 
       MsgBox("GLE = " + Runtime.InteropServices.Marshal.GetLastWin32Error.ToString) 
      End If 
     End If 
     mySocket.Close() 
    Else 
     MsgBox("Socket's connect() failed") 
    End If 
+0

的INT(預計 'BIO_new_socket' 最大值)更大錯誤在SSL_set_bio(ssl_socket,sbioPtr,sbioPtr)。 a)缺少代碼,b)使用.net包裝c)爲WinCE重新編譯SSL?你不能在桌面和WinCE上使用相同的代碼(除了簡單的東西)。 – josef

+0

謝謝!我爲平臺桌面和winCE設備重新編譯了OpenSSL。 –

回答

0

套接字句柄使用CompactFramework WinCE的創建一向重視比

相關問題