Пишу клиент-серверное приложение, на этапе написания сервера возникли проблемы с функциями. Не понимаю из за чего может быть проблема
Код программы:
server.h:
#ifndef SERVER_H
#define SERVER_H
#include <QTcpServer>
#include <QTcpSocket>
#include <QVector>
#include <QByteArray>
class Server : public QTcpServer {
Q_OBJECT
public:
Server();
QTcpSocket *socket = nullptr;
private:
QVector<QTcpSocket> sockets;
QByteArray data = nullptr;
void sendToClient(QString text);
public slots:
void incomingConnection(qintptr socketDescriptor);
void slotReadyRead();
};
#endif // SERVER_H
server.cpp:
#include "server.h"
#include <QDataStream>
Server::Server() {
if(this->listen(QHostAddress::Any, 2323)) {
qDebug() << "Server started";
} else {
qDebug() << "Server starting error";
}
}
void Server::incomingConnection(qintptr handle) {
socket = new QTcpSocket;
socket->setSocketDescriptor(handle);
connect(socket, &QTcpSocket::readyRead, this, &Server::slotReadyRead);
connect(socket, &QTcpSocket::disconnected, socket, &QTcpSocket::deleteLater);
sockets.push_back(*socket);
qDebug() << "Client connected";
}
void Server::slotReadyRead() {
socket = (QTcpSocket*) sender();
QDataStream in_socket(socket);
in_socket.setVersion(QDataStream::Qt_5_12);
if(in_socket.status() == QDataStream::Ok) {
qDebug() << "Reading...";
QString text = nullptr;
in_socket >> text;
qDebug() << text;
} else {
qDebug() << "Datastream error";
}
}
void Server::sendToClient(QString text) {
data.clear();
QDataStream out_socket(&data, QIODevice::WriteOnly);
out_socket.setVersion(QDataStream::Qt_5_12);
out_socket << text;
socket->write(data);
}
main.cpp:
#include <QCoreApplication>
#include "server.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Server server;
return a.exec();
}