我試圖使用Qt文檔中的示例代碼實現SSL服務器。調用QSslSocket :: startServerEncryption,但沒有任何反應
但是在serverSocket->startServerEncryption();
被調用後,沒有任何反應 - encrypted()
和sslErrors()
信號都沒有發射(我在與它們連接的插槽中放置了斷點)。
我通過使用connectToHostEncrypted
連接到我正在監聽的端口來連接QSslSocket來測試它。套接字發送數據,但我的服務器沒有響應(我正在使用TCP嗅探器/代理來查看從客戶端發送到服務器以及從服務器發送到客戶端的所有數據)。
這是我的服務器代碼:
void SslServer::incomingConnection(int socketDescriptor)
{
qDebug() << "SslServer::incomingConnection()";
QSslSocket *serverSocket = new QSslSocket(this);
if (serverSocket->setSocketDescriptor(socketDescriptor)) {
connect(serverSocket, SIGNAL(encrypted()), this, SLOT(ready()));
connect(serverSocket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(sslErrors(QList<QSslError>)));
serverSocket->startServerEncryption();
} else {
delete serverSocket;
}
}
這就是我如何連接到它:
server = new SslServer(this);
server->listen(QHostAddress::Any, 3333);
QSslSocket *socket = new QSslSocket(this);
socket->connectToHostEncrypted("127.0.0.1", 3333);
謝謝,我以爲連接'sslErrors'就夠了。我連接了'error'信號,並且它與'QAbstractSocket :: UnknownSocketError'錯誤一起發出。 – sashoalm
我發現更多關於錯誤,使用QSslSocket :: errorString。我現在編輯了我的問題。 – sashoalm