本文整理汇总了C++中QSslSocket::readLine方法的典型用法代码示例。如果您正苦于以下问题:C++ QSslSocket::readLine方法的具体用法?C++ QSslSocket::readLine怎么用?C++ QSslSocket::readLine使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QSslSocket
的用法示例。
在下文中一共展示了QSslSocket::readLine方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: dataReceived
//I'm the new device and this is the answer to my UDP identity package (data received)
void LanLinkProvider::dataReceived()
{
QSslSocket* socket = qobject_cast<QSslSocket*>(sender());
const QByteArray data = socket->readLine();
//qCDebug(KDECONNECT_CORE) << "LanLinkProvider received reply:" << data;
NetworkPackage* np = new NetworkPackage(QLatin1String(""));
bool success = NetworkPackage::unserialize(data, np);
if (!success) {
delete np;
return;
}
if (np->type() != PACKAGE_TYPE_IDENTITY) {
qCWarning(KDECONNECT_CORE) << "LanLinkProvider/newConnection: Expected identity, received " << np->type();
delete np;
return;
}
// Needed in "encrypted" if ssl is used, similar to "connected"
receivedIdentityPackages[socket].np = np;
const QString& deviceId = np->get<QString>(QStringLiteral("deviceId"));
//qCDebug(KDECONNECT_CORE) << "Handshaking done (i'm the new device)";
//This socket will now be owned by the LanDeviceLink or we don't want more data to be received, forget about it
disconnect(socket, &QIODevice::readyRead, this, &LanLinkProvider::dataReceived);
if (np->get<int>(QStringLiteral("protocolVersion")) >= MIN_VERSION_WITH_SSL_SUPPORT) {
bool isDeviceTrusted = KdeConnectConfig::instance()->trustedDevices().contains(deviceId);
configureSslSocket(socket, deviceId, isDeviceTrusted);
qCDebug(KDECONNECT_CORE) << "Starting client ssl (but I'm the server TCP socket)";
connect(socket, &QSslSocket::encrypted, this, &LanLinkProvider::encrypted);
if (isDeviceTrusted) {
connect(socket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(sslErrors(QList<QSslError>)));
}
socket->startClientEncryption();
} else {
qWarning() << np->get<QString>(QStringLiteral("deviceName")) << "uses an old protocol version, this won't work";
//addLink(deviceId, socket, np, LanDeviceLink::Locally);
delete receivedIdentityPackages.take(socket).np;
}
}
示例2: _q_readFromSocket
// main logic of the component - a slot triggered upon data entering the socket
// comments inline...
void QwwSmtpClientPrivate::_q_readFromSocket() {
while (socket->canReadLine()) {
QString line = socket->readLine();
qDebug() << "SMTP <<<" << line.toUtf8().constData();
QRegExp rx("(\\d+)-(.*)\n"); // multiline response (aka 250-XYZ)
QRegExp rxlast("(\\d+) (.*)\n"); // single or last line response (aka 250 XYZ)
bool mid = rx.exactMatch(line);
bool last = rxlast.exactMatch(line);
// multiline
if (mid){
int status = rx.cap(1).toInt();
SMTPCommand &cmd = commandqueue.head();
switch (cmd.type) {
// trying to connect
case SMTPCommand::Connect: {
int stage = cmd.extra.toInt();
// stage 0 completed with success - socket is connected and EHLO was sent
if(stage==1 && status==250){
QString arg = rx.cap(2).trimmed();
parseOption(arg); // we're probably receiving options
}
}
break;
// trying to establish deferred SSL handshake
case SMTPCommand::StartTLS: {
int stage = cmd.extra.toInt();
// stage 0 (negotiation) completed ok
if(stage==1 && status==250){
QString arg = rx.cap(2).trimmed();
parseOption(arg); // we're probably receiving options
}
}
default: break;
}
} else
// single line
if (last) {
int status = rxlast.cap(1).toInt();
SMTPCommand &cmd = commandqueue.head();
switch (cmd.type) {
// trying to connect
case SMTPCommand::Connect: {
int stage = cmd.extra.toInt();
// connection established, server sent its banner
if (stage==0 && status==220) {
sendEhlo(); // connect ok, send ehlo
}
// server responded to EHLO
if (stage==1 && status==250){
// success (EHLO)
parseOption(rxlast.cap(2).trimmed()); // we're probably receiving the last option
errorString.clear();
setState(QwwSmtpClient::Connected);
processNextCommand();
}
// server responded to HELO (EHLO failed)
if (state==2 && status==250) {
// success (HELO)
errorString.clear();
setState(QwwSmtpClient::Connected);
processNextCommand();
}
// EHLO failed, reason given in errorString
if (stage==1 && (status==554 || status==501 || status==502 || status==421)) {
errorString = rxlast.cap(2).trimmed();
sendHelo(); // ehlo failed, send helo
cmd.extra = 2;
}
//abortDialog();
}
break;
// trying to establish a delayed SSL handshake
case SMTPCommand::StartTLS: {
int stage = cmd.extra.toInt();
// received an invitation from the server to enter TLS mode
if (stage==0 && status==220) {
qDebug() << "SMTP ** startClientEncruption";
socket->startClientEncryption();
}
// TLS established, connection is encrypted, EHLO was sent
else if (stage==1 && status==250) {
setState(QwwSmtpClient::Connected);
parseOption(rxlast.cap(2).trimmed()); // we're probably receiving options
errorString.clear();
emit q->tlsStarted();
processNextCommand();
}
// starttls failed
else {
qDebug() << "TLS failed at stage " << stage << ": " << line;
errorString = "TLS failed";
emit q->done(false);
}
}
break;
// trying to authenticate the client to the server
case SMTPCommand::Authenticate: {
int stage = cmd.extra.toInt();
//.........这里部分代码省略.........