![](/img/trans.png)
[英]What's the difference between using QWebSocket with a URL "wss://..." and QSslSocket in Qt?
[英]QSslSocket return Invalid url
我拼命嘗試設置QSslSocket連接,我嘗試從blackberry示例開始,但始終在控制台上收到無效URL錯誤而沒有任何詳細信息...這是我嘗試運行的代碼:
if (!m_socket) {
bool res;
Q_UNUSED(res);
m_socket = new QSslSocket();
// Connect to signals to receive notifications
// about state changes
res = QObject::connect(m_socket,
SIGNAL(sslErrors(QList<QSslError>)),
this,
SLOT(onSslErrors(QList<QSslError>)));
Q_ASSERT(res);
res = QObject::connect(m_socket,
SIGNAL(stateChanged(QAbstractSocket::SocketState)),
this,
SLOT(onSocketSateChange(QAbstractSocket::SocketState)));
Q_ASSERT(res);
res = QObject::connect(m_socket,
SIGNAL(error ( QAbstractSocket::SocketError)),
this,
SLOT(onError(QAbstractSocket::SocketError)));
Q_ASSERT(res);
res = QObject::connect(m_socket, SIGNAL(encrypted()),
this,
SLOT(onSocketEncrypted()));
Q_ASSERT(res);
res = QObject::connect(m_socket, SIGNAL(readyRead()),
this,
SLOT(onSocketReadyRead()));
Q_ASSERT(res);
}
// Make the SSL connection to the host on the specified port
m_socket->connectToHostEncrypted("www.blackberry.com", 443);
/* if (!m_socket->waitForEncrypted()) {
qDebug() << m_socket->errorString();
//return 1;
}
*/
}
如果有人可以幫助或向我顯示ssl示例工作...
這是客戶端上的示例SSL連接。 我通過以下代碼連接到“ www.blackberry.com” 443:
SSLClient::SSLClient(QObject *parent)
{
if (!QSslSocket::supportsSsl())
QMessageBox::information(0, "Secure Socket Client",
"This system does not support OpenSSL.");
client_socket.setProtocol(QSsl::SslV3);
connect( &client_socket, SIGNAL(error(QAbstractSocket::SocketError)),
this, SLOT(TCPError(QAbstractSocket::SocketError)) );
connect( &client_socket, SIGNAL(sslErrors(QList<QSslError>)),
this, SLOT(sslError(QList<QSslError>)) );
connect( &client_socket, SIGNAL(readyRead()),
this, SLOT(tcpReady()) );
connect( &client_socket, SIGNAL(encrypted()),
this, SLOT(enable_client()) );
client_socket.abort();
client_socket.connectToHostEncrypted("www.blackberry.com", 443 );
}
void SSLClient::tcpReady()
{
QByteArray array = client_socket.read( client_socket.bytesAvailable() );
QString str;
QTextCodec *codec = QTextCodec::codecForName("UTF-16");
QTextDecoder *decoderWithoutBom = codec->makeDecoder(QTextCodec::IgnoreHeader );
str = decoderWithoutBom->toUnicode(array);
}
void SSLClient::sslError(QList<QSslError> errors)
{
client_socket.ignoreSslErrors();
}
void SSLClient::TCPError(QAbstractSocket::SocketError error)
{
QMessageBox::warning( this, tr("Error"),client_socket.errorString() );
client_socket.disconnectFromHost();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.