Seite 1 von 1

QServerSocket ableiten und Port übergeben?

Verfasst: 14. Januar 2005 16:17
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

Konstruktor

Verfasst: 1. Februar 2005 14:50
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)));
}