2015-10-15 15 views
6

Sto eseguendo webserver tornado per la connessione websocket sicura su Linux centos 6.6. Sto usando client Qt/C++ per connettermi usando QWebsocket aprendo un url come "wss: //191.23.4.56/etr/job". Ho ricevuto l'errore, "I socket SSL non sono supportati in questa piattaforma" Di cosa si tratta?ssl socket non supportato errore

+0

Qualcuno ha ricevuto un errore simile? Il mio client Qt è in esecuzione su Windos 7. – gaj

risposta

4

Il messaggio di errore "socket SSL non sono supportati in questa piattaforma" viene stampato QWebSocket::open() quando lo schema URL è wss e QSslSocket::supportsSsl() rendimenti false.

La funzione di membro static QSslSocket::supportsSsl():

Restituisce vero se questa piattaforma supporta SSL; in caso contrario, restituisce false. Se la piattaforma non supporta SSL, il socket non funzionerà nella fase di connessione .

Questo è il tuo problema principale. Ora abbiamo bisogno di scoprire perché Qt pensa che SSL non sia supportato dalla piattaforma.

Se si è scaricato Qt come pacchetto binario, la funzione supportsSsl() tenta di caricare le librerie richieste libssl e libcrypto in modo dinamico.

Se tali librerie non possono essere caricate, la funzione supportsSsl() restituisce false.

È possibile che libssl non sia installato nel sistema. Se riesci a trovare i file binari della libreria nel tuo sistema, ma non sono caricati da Qt, è possibile che il tuo binario libssl e/o libcrypto non siano compatibili con Qt binario.

Per evitare tali problemi è possibile creare il proprio Qt. Ad esempio, c'è una nuova istruzione su come costruire Qt-5.5.1. Nota il trucco con lo switch di configurazione -openssl-linked. Consente l'integrazione di librerie OpenSSL in librerie Qt5 invece di caricarle dinamicamente in fase di runtime.