Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Server.hpp>
- Server::Server(quint16 nPort, QWidget* pwgt) : QWidget(pwgt), sizeOfData (0) {
- db.setUserName("postgres");
- db.setHostName("77.223.89.11");
- db.setPort(5432);
- db.setPassword("Gaponuk62nata1953290402");
- db.setDatabaseName("museums");
- if(!db.open()) QMessageBox::about(nullptr, "MuseumOfNature", db.lastError().text());
- pServer = new QTcpServer(this);
- if (!pServer->listen(QHostAddress::Any, nPort)) {
- QMessageBox::critical(nullptr, "Server Error", "Unable to start the server: " + pServer->errorString());
- pServer->close();
- return;
- }
- connect(pServer, SIGNAL(newConnection()), this, SLOT(slotNewConnection()));
- pText = new QTextEdit;
- pText->setReadOnly(true);
- QVBoxLayout* pVboxLayout = new QVBoxLayout;
- pVboxLayout->addWidget(new QLabel("<h1>Server</h1>"));
- pVboxLayout->addWidget(pText);
- setLayout(pVboxLayout);
- }
- void Server::slotNewConnection() {
- QTcpSocket* pClientSocket = pServer->nextPendingConnection();
- connect(pClientSocket, SIGNAL(disconnected()), pClientSocket, SLOT(deleteLater()));
- connect(pClientSocket, SIGNAL(readyRead()), this, SLOT(slotReadClient()));
- }
- void Server::slotReadClient() {
- QTcpSocket* pClientSocket = qobject_cast<QTcpSocket*>(sender());
- QDataStream in(pClientSocket);
- in.setVersion(QDataStream::Qt_5_3);
- for (;;) {
- if (!sizeOfData) {
- if (pClientSocket->bytesAvailable() < sizeof(quint16)) {
- break;
- }
- in >> sizeOfData;
- }
- if (pClientSocket->bytesAvailable() < sizeOfData) {
- break;
- }
- QString str;
- in>> str;
- QString strMessage ="Client has sent - " + str;
- pText->append(strMessage);
- sizeOfData = 0;
- sendToClient(pClientSocket, str);
- }
- }
- void Server::sendToClient(QTcpSocket *pSocket, QString &str) {
- query.exec(str);
- QList<QString> results;
- QList<QByteArray> imgs;
- QSqlRecord record = query.record();
- while (query.next()) {
- results << query.value(record.indexOf("Описание квеста")).toString();
- results << query.value(record.indexOf("Название квеста")).toString();
- imgs << query.value(record.indexOf("Картинка № 1")).toByteArray();
- }
- QByteArray arrBlock;
- QDataStream out(&arrBlock, QIODevice::WriteOnly);
- out.setVersion(QDataStream::Qt_5_3);
- out << quint64(0)<<imgs;
- out.device()->seek(0);
- out <<quint64(arrBlock.size() - sizeof(quint64));
- //qDebug()<<arrBlock.size();
- pSocket->write(arrBlock);
- }
- Server::~Server() {
- db.close();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement