2017-02-24 64 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的创建一向重视比

相关问题