so, ich bin jetzt ein stück weiter. nachdem ich probleme mit den zertifikaten beseitigt habe, wird auf beiden seiten gemeldet, das die verbindung verschlüsselt ist - das encrypted() signal wird gesendet.
danach bekomme ich nun allerdings kein readyRead(), sodass weiterhin keine daten übermittelt werden.
der entsprechende code sieht mittlerweile folgendermaßen aus.
auf server seite:
Code: Alles auswählen
void SslThread::run()
{
QTcpSocket *tcpSocket = new QTcpSocket;
QSslSocket *serverSocket = new QSslSocket(tcpSocket);
QByteArray pass("xxxxxx");
serverSocket->setLocalCertificate("server.cert.crt");
serverSocket->setPrivateKey("privkey.pem",QSsl::Rsa,QSsl::Pem,pass);
if(serverSocket->setSocketDescriptor(socketDescriptor))
{
connect(serverSocket, SIGNAL(encrypted()), this, SLOT(ready()));
serverSocket->startServerEncryption();
}
else {
emit error(serverSocket->error());
delete serverSocket;
delete tcpSocket;
return;
}
QByteArray block;
QDataStream out(&block, QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_4_0);
out << (quint16)0;
out << text;
out.device()->seek(0);
out << (quint16)(block.size() - sizeof(quint16));
serverSocket->write(block);
serverSocket->disconnectFromHost();
serverSocket->waitForDisconnected();
}
im clienten:
Code: Alles auswählen
int main(int argc, char **argv)
{
QCoreApplication app(argc, argv);
QSslSocket *socket = new QSslSocket;
socket->connectToHostEncrypted("127.0.0.1", 4711);
socket->ignoreSslErrors();
if(socket->waitForEncrypted(1000)) {
qDebug("Connection Encrypted!");
}
while(socket->waitForReadyRead())
{
qDebug("ready-read");
qDebug() << socket->readAll();
}
return app.exec();
}
vielleicht kann mir an der stelle jemand einen tip geben.
bye
michael