Сервер, согласно хелпу:
class SslServer : public QTcpServer
{
Q_OBJECT
public:
explicit SslServer(QObject *parent = 0);
private:
void incomingConnection(int handle);
QSslSocket *socket;
signals:
void message(QString);
public slots:
void on_encrypted();
void on_dataRead();
};
SslServer::SslServer(QObject *parent) :
QTcpServer(parent)
{
listen(QHostAddress::Any, 3344);
}
void SslServer::incomingConnection(int handle)
{
socket = new QSslSocket(this);
if (socket->setSocketDescriptor(handle))
{
connect(socket, SIGNAL(encrypted()), this, SLOT(on_encrypted()));
connect(socket, SIGNAL(readyRead()), this, SLOT(on_dataRead()));
socket->startServerEncryption();
emit message("New connection...\r\n");
foreach(QSslError err, socket->sslErrors())
{
emit message(QString(err.errorString()).append("\r\n"));
}
}
else delete socket;
}
void SslServer::on_dataRead()
{
QByteArray arr = socket->readAll();
emit message(QString(arr).append("\r\n"));
}
void SslServer::on_encrypted()
{
emit message(QString("Encrypted... \r\n"));
}
Подсоединяюсь клиентом:
socket = new QSslSocket(this);
connect(socket, SIGNAL(encrypted()), this, SLOT(on_encrypted()));
connect(socket, SIGNAL(readyRead()), this, SLOT(on_dataRead()));
socket->connectToHostEncrypted("localhost", 3344, QIODevice::ReadWrite);
socket->waitForEncrypted();
socket->write(QString("Hello").toUtf8());
Получаю:
The remote host closed the connection
Что не так? В слот on_encrypted() не заходит.
Про сертификаты и ключи читал, формировал, указывал, но толку нету. Да и не нужны по большому счету мне подтверждения подлинности, нужен только протокол SSL.