#include <iostream>
#include <QtNetwork>
#include <QtCore>
#include <QFile>
void FileWrite ( QString name, QString data ) {
QFile file( name );
// QIODevice::Append - дозапись
// QIODevice::WriteOnly - перезапись
if ( !file.open(QIODevice::WriteOnly | QIODevice::Text) ) {
return; // Не удалось открыть файл на запись
}
QTextStream f(&file);
f << data.toUtf8();
file.close();
return;
}
QString SocketGo ( QString host, int port, QString data ) {
QTcpSocket socket;
QByteArray block;
QString s;
socket.connectToHost( host, port );
socket.waitForConnected(30000);
socket.write( data.toAscii() );
socket.waitForBytesWritten(30000);
while ( socket.waitForReadyRead(30000) )
{
block = socket.readAll();
s += block.data();
}
socket.disconnectFromHost();
return s;
}
int main(int /*argc*/, char ** /*argv*/) {
QString str, data;
// [1]
str = "GET / HTTP/1.1\r\n"
"Host: ya.ru\r\n"
"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.
Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\r\n"
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n"
"Accept-Language: ru,en-us;q=0.7,en;q=0.3\r\n"
"Accept-Encoding: gzip,deflate\r\n"
"Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n"
"Keep-Alive: 300\r\n"
"Connection: keep-alive\r\n"
"Cache-Control: no-cache\r\n\r\n";
data = SocketGo( "ya.ru", 80, str );
FileWrite( "ya.html", data );
// [2]
str = "GET / HTTP/1.1\r\n"
"Host: yandex.ru\r\n"
"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.
Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)\r\n"
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n"
"Accept-Language: ru,en-us;q=0.7,en;q=0.3\r\n"
"Accept-Encoding: gzip,deflate\r\n"
"Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n"
"Keep-Alive: 300\r\n"
"Connection: keep-alive\r\n"
"Cache-Control: no-cache\r\n\r\n";
data = SocketGo( "
www.yandex.ru", 80, str );
FileWrite( "yandex.html", data );
return 0;
}
с короткими доменами (например ya.ru) все работает как нужно, с длинными (например yandex.ru) пишет какуюто абракадабру.
кроме длины домена никакой связи не нахожу ... мистика