如何在 C++/QT 中创建带有 TCP 服务器套接字的 Http 服务器
How to Create a Http Server with TCP Server Sockets in C++/QT
我想创建一个 Http 服务器来发送 MJPEG 流。因此,首先我想创建一个只发送一些 html/text 的简单版本。我已经设法设置了一个 TCP-Server,但我不知道如何 "act" 像一个 http 服务器。
我做了什么:
创建了 TCP-Server。当客户端连接时,会创建一个 TCP-Socket。然后我实现了一个 ReadyRead SLOT,它在浏览器向服务器发送 "GET" 请求时执行。
GET / HTTP/1.1
Host: 127.0.0.1:8889
User-Agent:
Mozilla/5.0...
然后我运行遵循代码
QByteArray header = "HTTP/ 1.1 200 OK\r\n";
m_Client->write(header);
QByteArray ContentType = "Content-Type: text/html\r\n";
m_Client->write(ContentType);
QByteArray Body = "Test";
m_Client->write(Body);
m_Client->close();
但是我在浏览器中看到的是
HTTP/ 1.1 200 OK
Content-Type: text/html
Test
那我做错了什么?我考虑过接收客户端 GET 请求,发送 Header、Mimes 和 Return 中的内容,然后关闭连接....这个方法是错误的还是我编码的方式?
您在 /
和 1.1
之间有一个额外的 space,并且您在 headers 块和响应 body 之间缺少一个空行].
我想创建一个 Http 服务器来发送 MJPEG 流。因此,首先我想创建一个只发送一些 html/text 的简单版本。我已经设法设置了一个 TCP-Server,但我不知道如何 "act" 像一个 http 服务器。
我做了什么: 创建了 TCP-Server。当客户端连接时,会创建一个 TCP-Socket。然后我实现了一个 ReadyRead SLOT,它在浏览器向服务器发送 "GET" 请求时执行。
GET / HTTP/1.1
Host: 127.0.0.1:8889
User-Agent: Mozilla/5.0...
然后我运行遵循代码
QByteArray header = "HTTP/ 1.1 200 OK\r\n";
m_Client->write(header);
QByteArray ContentType = "Content-Type: text/html\r\n";
m_Client->write(ContentType);
QByteArray Body = "Test";
m_Client->write(Body);
m_Client->close();
但是我在浏览器中看到的是
HTTP/ 1.1 200 OK
Content-Type: text/html
Test
那我做错了什么?我考虑过接收客户端 GET 请求,发送 Header、Mimes 和 Return 中的内容,然后关闭连接....这个方法是错误的还是我编码的方式?
您在 /
和 1.1
之间有一个额外的 space,并且您在 headers 块和响应 body 之间缺少一个空行].