Russian Qt Forum

Qt => Работа с сетью => Тема начата: neosapient от Ноябрь 04, 2008, 17:29



Название: Http server (ищю пример)
Отправлено: neosapient от Ноябрь 04, 2008, 17:29
Ищю пример http server`a
Возможно у кого-нибудь есть заготовка, чтобы не изобретать велосипед?

P.S.
В example ближе всех пример threadedfortuneserver. Но хотелось бы отказаться от дополнительных поделок.


Название: Re: Http server (ищю пример)
Отправлено: ритт от Ноябрь 04, 2008, 20:15
резонный вопрос: а зачем?
уже и так понаизобретено достаточно велосипедоввэб-серверов...и легковесные, и проксирующие/кеширующие, и особо секюрные...на любой вкус и цвет!
вот последняя (встреченная мною) поделка: http://dmr.ath.cx/net/darkhttpd/


Название: Re: Http server (ищю пример)
Отправлено: neosapient от Ноябрь 06, 2008, 13:01
Что то не пойму ничего...
Вот клиент обращается к моему http-серверу, только в параметры ничего не приходит.
Код:
void SocketThread::run()
{
QString str;
QTcpSocket tcpSocket;
QByteArray block;
char data[256];
qint64 maxSize = 256;
if (!tcpSocket.setSocketDescriptor(socketDescriptor)) {
emit error(tcpSocket.error());
return;
}
maxSize = tcpSocket.read( data, maxSize );
data[maxSize] = '\0';
qDebug() << "\"" << data << "\"";
//qDebug() << tcpSocket.readAll();
}
Полный код в приложении.

Запускаю в отладчике этот код, ставлю точку останова на приведённой функции.
Затем в браузере открываю страницу http://127.0.0.1:8080/  , где порт 8080 это порт на котором работает этот http-сервер.

Увы, но никаких данных я не принимаю, а ожидал получить заголовок запроса... В чем я ошибся?


Название: Re: Http server (ищю пример)
Отправлено: ритт от Ноябрь 06, 2008, 14:27
а с чего ты взял, что в буффере сокета уже имеются данные? их там ещё быть не должно...
пользуй bytesAvailable и waitForReadyRead...например, так:
Код:
while(tcpSocket.bytesAvailable() < maxSize)
{
if(!tcpSocket.waitForReadyRead())
{
emit error("чёй-то не читаицца...");
}
else
{
maxSize = tcpSocket.read( data, maxSize );
data[maxSize] = '\0';
qDebug() << "\"" << data << "\"";
}
}