blob: 93e04c927fa9b826d49e964aabc67927241be198 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
#include "qookie-cast-client.h"
#include <cstdint>
#include <QApplication>
Server::Server(WebView& webview, QObject *parent)
: QObject(parent)
, webview(webview)
{
server = new QTcpServer(this);
connect(server, SIGNAL(newConnection()), SLOT(newConnection()));
server->listen(QHostAddress::Any, 1024);
}
void Server::newConnection()
{
size = -1;
html = "";
while (server->hasPendingConnections())
{
QTcpSocket *socket = server->nextPendingConnection();
connect(socket, SIGNAL(readyRead()), SLOT(readyRead()));
connect(socket, SIGNAL(disconnected()), SLOT(disconnected()));
}
}
void Server::disconnected()
{
QTcpSocket *socket = static_cast<QTcpSocket*>(sender());
socket->deleteLater();
}
void Server::readyRead()
{
QTcpSocket *socket = static_cast<QTcpSocket*>(sender());
if(size < 0)
{
std::uint32_t sz;
socket->read((char*)&sz, sizeof(std::uint32_t));
size = sz;
}
while (socket->bytesAvailable() > 0)
{
auto data = socket->readAll();
html.append(QString::fromUtf8(data));
size -= data.size();
}
if(size <= 0)
{
webview.setHtml(html);
size = -1;
html = "";
}
}
int main(int argc, char *argv[])
{
QApplication qapp(argc, argv);
WebView webview;
webview.show();//Maximized();
Server server(webview);
return qapp.exec();
}
|