connect und close...

Alles rund um die Programmierung mit Qt
Antworten
Nalid
Beiträge: 26
Registriert: 21. Februar 2011 23:49

connect und close...

Beitrag von Nalid »

Hi, Ich hab schon mal ein Spiel gemacht bei der man über Lan spielt.

Da funktionierte alles ohne Probleme... Doch nun bei meinem Pokerspiel das ich in OOP am machen bin stimmt etwas nicht. Obwohl ich in etwa den selben Code verwende um die Connection aufzubauen, sagt er mir connect() und close() seinen nicht deklariert. Wenn ich bei meinem altem Projekt über connect() fahre steht da bool QObject:: i.was... aber bei meinem Poker spiel kommt da garnichts.

Weiss einer woran das liegen könnte?
DBGTMaster
Beiträge: 190
Registriert: 19. August 2010 10:00

Re: connect und close...

Beitrag von DBGTMaster »

Die Klasse QObject geerbt?

Beispiel?
Nalid
Beiträge: 26
Registriert: 21. Februar 2011 23:49

Re: connect und close...

Beitrag von Nalid »

hier das h file...

Code: Alles auswählen

#ifndef CCONNECT_H
#define CCONNECT_H
#include <CGame.h>


#include <QtGui>
#include <QtNetwork/QTcpSocket>
#include <QtNetwork/QTcpServer>
#include <QtNetwork/QNetworkInterface>
 #include <QObject>
class CConnect
{
    Q_OBJECT

public:
    CConnect();


private:
    QString getMyIP();
    void acceptConnection();
    void startRead();

    void clientConnectionEstablished();
    void build_connection(QString other_ip, quint16 other_port);


       // used by tcp client

    QTcpSocket Clientt;
    QTcpServer Server;        // used by tcp server
    QTcpSocket *pServerClient;


    CGame *game;



};

#endif // CCONNECT_H

hier cpp (ist noch nicht fertig)

Code: Alles auswählen

#include "CConnect.h"


CConnect::CConnect()
{
   game = new CGame;



   // -- Server Setup ------------
   connect(&Server, SIGNAL(newConnection()), this, SLOT(acceptConnection()));

   bool ok = Server.listen();
   if (!ok) {

       QMessageBox::critical(this,"TCP Server", "Unable to start the server: " + Server.errorString());

       close();
       return;
   }
   QString ipAddress = getMyIP();
   quint16 port = Server.serverPort();



   qDebug()<<"The Server is running on IP: "<<ipAddress<<" Port: "<<port<<" Run a client now." ;

   // -- Client Setup ------------
   connect(&Clientt, SIGNAL(connected()), this, SLOT(clientConnectionEstablished()));





}




void CConnect::acceptConnection()
{
    pServerClient = Server.nextPendingConnection();
    connect(pServerClient, SIGNAL(readyRead()),this, SLOT(startRead()));
}

void CConnect::clientConnectionEstablished() {
    qDebug()<<"verbindung hergestellt";
}

void CConnect::build_connection(QString other_ip,quint16 other_port){
    QHostAddress addr(other_ip);
    Clientt.connectToHost(addr, other_port);
}




void CConnect::startRead()
{    //wenn weniger als 1 byte warten sonst aus der methode kicken
    if (pServerClient->bytesAvailable() < 1)
        return;

    // anzahl bytes lesen
    QByteArray empfangpacket;
    empfangpacket = pServerClient->read(pServerClient->bytesAvailable());
    //eingelesenes bearbeiten

    switch(empfangpacket[0]){
    case 's':QMessageBox::information(this,"Bereit?","Wenn sie bereit sind bitte Ready anklicken.",QMessageBox::Ok);

        game->first=false;
        break;
    case 'g':
        break;
    default :


    break;
}
}
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: connect und close...

Beitrag von Christian81 »

Warum liest du nicht einfach mal das was DBGTMaster geschrieben hast und hälst dich dran?
Siehe auch http://doc.qt.nokia.com/4.7/signalsandslots.html
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Nalid
Beiträge: 26
Registriert: 21. Februar 2011 23:49

Re: connect und close...

Beitrag von Nalid »

Ich hab das Problem gefunden... ich musste von QObject erben... das war alles^^
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Re: connect und close...

Beitrag von pfid »

Bild
Nalid
Beiträge: 26
Registriert: 21. Februar 2011 23:49

Re: connect und close...

Beitrag von Nalid »

und nun kann ich keine pointer mehr machen :D hahahha wtf...
Antworten