QServerSocket ableiten und Port übergeben?

Alles rund um die Programmierung mit Qt
Antworten
john
Beiträge: 110
Registriert: 14. August 2004 20:55
Wohnort: München

QServerSocket ableiten und Port übergeben?

Beitrag von john »

Hallo Leute,

ich progge mir gerade ein Chat-Programm. Nun habe ich das Problem, dass ich den Chatserver von QServerSocket ableiten muss, und dabei möchte ich den Port als Argument an den Konstrukteur übergeben. Das klappt irgendwie nicht richtig. Wenn ich den Server ohne der Übergabe des Ports (als Argument an die Serverklasse) starte, dann klappts!

Hier ein paar Auszüge:
die Serverklasse:

Code: Alles auswählen

ChatServer::ChatServer(Q_UINT16, int, QObject *parent, const char *name)
    : QServerSocket(parent, name)
{
    //connect(mainWin, SIGNAL(setRemoteText(QString)), this, SLOT(sendRemoteText(QString)));
}

Code: Alles auswählen

void ChatServer::newConnection(int socketId)
{
    socket = new QSocket(this);
    connect(socket, SIGNAL(readyRead() ), this, SLOT(readClient()));
    connect(socket, SIGNAL(delayedCloseFinished()), this,   SLOT(discardClient()));
    socket->setSocket(socketId);
    stream.setDevice(socket);
    
    stream << "Willkommen beim Chatserver!" << endl;
    socket->flush();
    emit newConnect();
}
der Aufruf:

Code: Alles auswählen

server = new ChatServer(port, 1, this, "Server");
	connect(server, SIGNAL(newConnect()), this, SLOT(connectionOK()));
	connect(server, SIGNAL(endConnect()), this, SLOT(disconnectNet()));
	connect(server, SIGNAL(setRemoteText(QString)), this, SLOT(getRemoteText(QString)));
	connect(this, SIGNAL(killServer()), server, SLOT(discardClient()));
Wie gesagt, wenn man den Konstrukteur auf:

Code: Alles auswählen

ChatServer::ChatServer(QObject *parent, const char *name)
    : QServerSocket(parent, name)
ändert, und den Port "hardcoded" dann funzt es. Ich weiß, dass der Port vom Typ Q_UINT sein muss, trotzdem bekomme ich fehlermeldungen vom Compieler, dass kein passender Konstrukteur gefunden wird.

Vielen Dank schonmal für jeden Hinweis!

Ciao john
Rainbow2
Beiträge: 2
Registriert: 17. Dezember 2004 10:57

Konstruktor

Beitrag von Rainbow2 »

Ich denke im Konstruktor muß für den Port nicht nur der Typ angegeben werden.
ChatServer::ChatServer(Q_UINT16 uiPort, int iWerWeiss, QObject *parent, const char *name)
: QServerSocket(parent, name)
{
//connect(mainWin, SIGNAL(setRemoteText(QString)), this, SLOT(sendRemoteText(QString)));
}
Antworten