По какой-то причине мне нужно использовать блокирующий вызов для выполнения доступа к изображениям с сервера Google. Однако QNetworkAccessManager кажется асинхронным, хотя вокруг много работы, например вызов eventLoop.exec(); многие люди в Интернете предложили мне не делать этого.Qt: Использовать сокет tcp для получения изображения карты Google?
Так что я пытаюсь использовать TCP socekt. Я хочу, чтобы открыть изображение здесь:
http://mt1.google.com/vt/lyrs=y&x=0&y=0&z=0
И вот мой код:
socket = new QTcpSocket(this);
socket->connectToHost("mt1.google.com", 80, QIODevice::ReadWrite);
if(socket->waitForConnected(5000))
{
qDebug() << "Connected!";
// send
socket->write("/vt/lyrs=y&x=0&y=0&z=0");
socket->waitForBytesWritten(1000);
socket->waitForReadyRead(3000);
qDebug() << "Reading: " << socket->bytesAvailable();
// get the data
qDebug() << socket->readAll();
// close the connection
socket->close();
}
else
{
qDebug() << "Not connected!";
}
Но это, кажется, работает на всех? Что я должен писать через сокет tcp, чтобы получить изображение?
Сервер Google ожидает от вас HTTP-запросов. Вам нужно реализовать http-протокол для получения изображения из tcp-сокета. – Milovidov