#include "qookie-cast-client.h" #include #include 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(sender()); socket->deleteLater(); } void Server::readyRead() { QTcpSocket *socket = static_cast(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(); }