我是靠谱客的博主 不安花卷,最近开发中收集的这篇文章主要介绍TuFao服务器的安装和搭建TuFao服务器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

TuFao服务器

tufao是一个由QT编写的HTTP服务器。
tufao代替apache来实现http的通信。

安装tufao

  • 获取原代码
  • 编译和安装
    sudo apt-get install cmake qt-sdk
    在tufao目录下创建build目录
    cd build
    cmake .. -DCMAKE_INSTALL_PREFIX=/usr
    make
    sudo make install
  • 创建工程
    创建空的工程
    工程文件中增加CONFIG += TUFAO1 C++11
    增加一个类MyServer,一定是QObject派生类
    增加一个main.cpp实现main函数
    在MyServer的构造函数,创建Tufao::HttpServer对象server
    将server的信号requestReady和自己写的槽函数slotRequestReady连接
    在slotRequestReady函数中,实现http协议的响应报文。
    示例如下:
    MyServerHandlePost.h
#ifndef MYSERVERHANDLEPOST_H
#define MYSERVERHANDLEPOST_H
#include <QObject>
#include <Tufao/HttpServer>
#include <Tufao/HttpServerRequest>
#include <Tufao/HttpServerResponse>
using namespace Tufao;
class MyServerHandlePost : public QObject
{
Q_OBJECT
public:
explicit MyServerHandlePost(QObject *parent = 0);
HttpServer* server;
void handlePostData(HttpServerRequest&, HttpServerResponse&);
signals:
public slots:
void slotRequestReady(HttpServerRequest&, HttpServerResponse&);
};
#endif // MYSERVERHANDLEPOST_H

MyServerHandlePost.cpp

#include "MyServerHandlePost.h"
#include <QFile>
#include <QJsonObject>
#include <QJsonValue>
#include <QJsonDocument>
#include <QJsonArray>
MyServerHandlePost::MyServerHandlePost(QObject *parent) : QObject(parent)
{
server = new HttpServer;
if(!server->listen(QHostAddress::Any, 8081))
{
qDebug()<<"bind error";
}
connect(server, &HttpServer::requestReady,
this, &MyServerHandlePost::slotRequestReady);
}
void MyServerHandlePost::handlePostData(HttpServerRequest &request, HttpServerResponse &response)
{
//
QFile file("/home/xueguoliang/a.txt_upload");
//
file.open(QFile::WriteOnly);
/*
data is {username: "xxx", password: "yyy"}
*/
QByteArray data = request.readBody();
QJsonDocument doc = QJsonDocument::fromJson(data);
QJsonObject root = doc.object();
QString username = root.value("username").toString();
QString password = root.value("password").toString();
if(username == "aaa" && password== "bbb")
{
// {result: "ok"}
root.insert("result", QString("ok"));
}
else
{
// {result: "ok"}
root.insert("result", QString("err"));
root.insert("reason", QString("username or password error"));
}
{
QJsonDocument doc(root);
QByteArray buf = doc.toJson();
response.writeHead(HttpResponseStatus::OK);
response.end(buf);
}
//
file.write(data);
//
file.close();
}
void MyServerHandlePost::slotRequestReady(HttpServerRequest &request, HttpServerResponse & response)
{
if(request.method() == "POST")
{
//
connect(&request, &HttpServerRequest::ready, )
// end signal: all data is ready
//
connect(&request, SIGNAL(end()), this, SLOT(slotDataEnd()));
connect(&request, &HttpServerRequest::end, [&](){
handlePostData(request, response);
});
}
else
{
response.writeHead(HttpResponseStatus::OK);
response.end("i need post methodn");
}
}

最后

以上就是不安花卷为你收集整理的TuFao服务器的安装和搭建TuFao服务器的全部内容,希望文章能够帮你解决TuFao服务器的安装和搭建TuFao服务器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部