Qtドキュメントのサンプルコードを使用してSSLサーバーを実装しようとしています。
しかし、serverSocket->startServerEncryption();
呼び出された後は何も起こりencrypted()
ません。sslErrors()
信号も信号も出力されません(接続されているスロットにブレークポイントを設定しました)。
使用しているQSslSocketをリッスンしconnectToHostEncrypted
ているポートに接続してテストします。ソケットはデータを送信しますが、サーバーが応答しません(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);