Hallo,
ich programmiere gerade einen Server mit QT, wenn der Server eine neue Verbindung meldet wir die Funktion ausgeführt:
Client.h
nextclient.cpp
nun Frage ich mich, wenn der Client die Verbindung beendet, wird der slot disconnected() ausgeführt, aber wird das Objekt auch gelöscht, oder muss ich das manuell in dem disconnected() Slot machen ?
Dann wäre da noch was, ich möchte auch die Funktion implementieren, dass der Server von sich aus eine Verbindung beendet. Ich habe in der QT Doku gelesen dass das Socket einen Slot dafür hat: void QAbstractSocket::disconnectFromHostImplementation ().
Es reicht ja dann, ein Signal an diesen Slot zu schicken und um weiteres muss ich mich nicht kümmern ?
Mo1k
ich programmiere gerade einen Server mit QT, wenn der Server eine neue Verbindung meldet wir die Funktion ausgeführt:
Code:
void MyServer::incomingConnection(int handle)
{
nextClient *client = new nextClient(this);
client->newsocket(handle);
}
Client.h
Code:
#ifndef NEXTCLIENT_H
#define NEXTCLIENT_H
#include <QObject>
#include <QTcpSocket>
#include <QDebug>
class nextClient : public QObject
{
Q_OBJECT
public:
explicit nextClient(QObject *parent = 0);
void newsocket(int descriptor);
signals:
public slots:
void connected();
void disconnected();
void readyRead();
private:
QTcpSocket *socket;
};
#endif // NEXTCLIENT_H
nextclient.cpp
Code:
#include "nextclient.h"
nextClient::nextClient(QObject *parent) :
QObject(parent)
{
}
void MyClient::newsocket(int descriptor)
{
socket = new QTcpSocket(this);
connect(socket,SIGNAL(connected()),this,SLOT(connected()));
connect(socket,SIGNAL(disconnected()),this,SLOT(disconnected()));
connect(socket,SIGNAL(readyRead()),this,SLOT(readyRead()));
socket->setSocketDescriptor(descriptor);
qDebug() << "client connected";
}
void nextClient::connected()
{
qDebug() << "client connected event";
}
void nextClient::disconnected()
{
qDebug() << "client disconnected";
}
void nextClient::readyRead()
{
qDebug() << socket->readAll();
}
nun Frage ich mich, wenn der Client die Verbindung beendet, wird der slot disconnected() ausgeführt, aber wird das Objekt auch gelöscht, oder muss ich das manuell in dem disconnected() Slot machen ?
Dann wäre da noch was, ich möchte auch die Funktion implementieren, dass der Server von sich aus eine Verbindung beendet. Ich habe in der QT Doku gelesen dass das Socket einen Slot dafür hat: void QAbstractSocket::disconnectFromHostImplementation ().
Es reicht ja dann, ein Signal an diesen Slot zu schicken und um weiteres muss ich mich nicht kümmern ?
Mo1k
Zuletzt bearbeitet: