Russian Qt Forum
Июнь 15, 2024, 22:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Http server (ищю пример)  (Прочитано 6411 раз)
neosapient
Гость
« : Ноябрь 04, 2008, 17:29 »

Ищю пример http server`a
Возможно у кого-нибудь есть заготовка, чтобы не изобретать велосипед?

P.S.
В example ближе всех пример threadedfortuneserver. Но хотелось бы отказаться от дополнительных поделок.
Записан
ритт
Гость
« Ответ #1 : Ноябрь 04, 2008, 20:15 »

резонный вопрос: а зачем?
уже и так понаизобретено достаточно велосипедоввэб-серверов...и легковесные, и проксирующие/кеширующие, и особо секюрные...на любой вкус и цвет!
вот последняя (встреченная мною) поделка: http://dmr.ath.cx/net/darkhttpd/
Записан
neosapient
Гость
« Ответ #2 : Ноябрь 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-сервер.

Увы, но никаких данных я не принимаю, а ожидал получить заголовок запроса... В чем я ошибся?
Записан
ритт
Гость
« Ответ #3 : Ноябрь 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 << "\"";
}
}
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.117 секунд. Запросов: 20.