Ну у меня проблема в том что
1) прием медленный (огнелис в 2 раза быстрее работает).
2) прием останавливается, а у огнелиса нет.
Собственно переписал под
QSslSocket. Стало лучше, но не совсем. Осталась одна небольшая проблема, сокет переходит в статус
QAbstractSocket::
UnconnectedState раньше чем я успеваю вычитать с него конец.
Пробовал ловить
C++ (Qt)
...................
connect(socket,SIGNAL(readyRead()),this,SLOT(readB()));
connect(socket,SIGNAL(readChannelFinished()),this,SLOT(readB()));
connect(socket,SIGNAL(aboutToClose()),this,SLOT(readB()));
connect(socket,SIGNAL(disconnected()),this,SLOT(readB()));
connect(socket,SIGNAL(sslErrors(QList<QSslError>)),this,SLOT(sslErrors(QList<QSslError>)));
connect(socket,SIGNAL(stateChanged(QAbstractSocket::SocketState)),this,SLOT(stateChanged(QAbstractSocket::SocketState)));
....................
void SslGrabber::stateChanged(QAbstractSocket::SocketState state){
qWarning()<<"SslGrabber::stateChanged()"<<state;
if(state==QAbstractSocket::ClosingState)readB();
}
void SslGrabber::readB(){
// qWarning()<<"SslGrabber::readB()";
QFile fi("log.txt");
fi.open(QIODevice::Append);
while(socket->bytesAvailable()){
fi.write(socket->readAll());
socket->waitForReadyRead(1);
}
fi.close();
}
Безрезультатно.
всё протекает примерно следующим образом
Запускается C:\QtSDK\PROJECTS\SSL_Test-build-desktop\release\SSL_Test.exe...
SslGrabber::SslGrabber(QObject *parent)
SslGrabber::stateChanged() QAbstractSocket::HostLookupState
SslGrabber::stateChanged() QAbstractSocket::ConnectingState
SslGrabber::stateChanged() QAbstractSocket::ConnectedState
SslGrabber::sslErrors
SslGrabber::StartRec()
SslGrabber::timeout() QAbstractSocket::ConnectedState 0
SslGrabber::timeout() QAbstractSocket::ConnectedState 0
SslGrabber::timeout() QAbstractSocket::ConnectedState 0
SslGrabber::timeout() QAbstractSocket::ConnectedState 0
SslGrabber::timeout() QAbstractSocket::ConnectedState 0
SslGrabber::timeout() QAbstractSocket::ConnectedState 0
SslGrabber::timeout() QAbstractSocket::ConnectedState 0
SslGrabber::timeout() QAbstractSocket::ConnectedState 0
SslGrabber::timeout() QAbstractSocket::ConnectedState 0
SslGrabber::stateChanged() QAbstractSocket::ClosingState
SslGrabber::stateChanged() QAbstractSocket::UnconnectedState
SslGrabber::timeout() QAbstractSocket::UnconnectedState 0
C:\QtSDK\PROJECTS\SSL_Test-build-desktop\release\SSL_Test.exe завершился с кодом 0
Кто что может посоветовать в плане отлова хвоста? не дописывает не так уж и много порядка 10кб, по сравнению со страницей в 8мб...
UPDATEПереписал прием на
C++ (Qt)
void SslGrabber::readB(){
// qWarning()<<"SslGrabber::readB()";
QFile fi("log.txt");
fi.open(QIODevice::Append);
fi.write(socket->readAll());
fi.close();
}
и проблема решилась. Из 4х попыток 4 раза страница была записана до конца. Спасибо всем отвечавшим :clapping: