#define CONNECTION_REFUSED_TIME 20000 QImage getImage(QString qstrLogin,QString qstrDomain,bool flgBig) { QString qstrDelimeter="/",qstrBig ="_mrimavatar", qstrSmall="_mrimavatarsmall",qstrHost="obraz.foto.mail.ru", qstrRequest; QImage qiResult; if(flgBig) qstrRequest=qstrDelimeter+qstrDomain+qstrDelimeter+qstrLogin+qstrDelimeter+qstrBig; else qstrRequest=qstrDelimeter+qstrDomain+qstrDelimeter+qstrLogin+qstrDelimeter+qstrSmall; QTcpSocket Socket; QString qstrAvailableBytes; Socket.connectToHost(qstrHost,80,QIODevice::ReadWrite); if(!Socket.waitForConnected(CONNECTION_REFUSED_TIME)) return qiResult; char buf[200]; strcpy(buf,QString("GET %1 HTTP/1.1\r\nHost: %2\r\n\r\n").arg(qstrRequest).arg(qstrHost).toAscii().constData()); Socket.write(buf,strlen(buf)); Socket.waitForBytesWritten(); if(!Socket.waitForDisconnected(CONNECTION_REFUSED_TIME)) return qiResult; QRegExp regexp("(Content-Length: )([0-9]+)"); int Num=0; bool flgOk; QByteArray qbaBlock; qbaBlock=Socket.read(Socket.bytesAvailable()); qstrAvailableBytes=qbaBlock; if(regexp.indexIn(qbaBlock)>-1) { Num=regexp.cap(2).toInt(&flgOk); if(!flgOk) return qiResult; qbaBlock=qbaBlock.right(Num); qiResult=QImage::fromData(qbaBlock); } return qiResult; }