Qt TcpSocket auf Prot richtig setzen



  • Morgen,

    ich versuche nun schon den ganzen tag verzweifelt mit qt einen TcpSocket zu schreiben, bei dem ich Port und Adresse selbst setzen kann, da ich über diese Strings senden will, aber das soll halt über einen ganz bestimmten Port und einen ganz bestimmte IP passieren, da ich aber neu in qt bin, weiß ich nicht über welchen befehl ich das ändere und Verbindung herstelle. Bitte helft mir und gebt mir bitte Tipps wie ich das schaffe. Danke schon mal.

    Hier ist der Code, wie ich ihn gerade habe:
    Header:

    #ifndef CSOCKET_H
    #define CSOCKET_H
    
    #include<QtCore>
    #include<QtNetwork>
    #include "CMessage.h"
    
    class CSocket : public QTcpSocket
    {
    
    public:
        int m_iPort;
        QString m_qsAdresse;
    
        CSocket(int iPort, QString &qsAdresse);
        QString getData();
        bool sendData(CMessage ooutMsg);
        bool hasconnected();
    };
    
    #endif // CSOCKET_H
    

    Quelltext:

    #include "CSocket.h"
    
    CSocket::CSocket(int iPort, QString &qsAdresse)
    {
    	this->m_iPort = iPort;
    	setLocalPort(iPort);
    	this->m_qsAdresse = qsAdresse;
           QHostAddress oAdress(qsAdresse);
           setLocalAddress(oAdress);
    
    }
    
    QString CSocket::getData()
    {
    
    	QByteArray oData = this->readAll();
    	QString qsErgebnis(oData);
    	return qsErgebnis;
    
    }
    
    bool CSocket::sendData(CMessage ooutMsg)
    {
    	QByteArray Msg(ooutMsg.m_qsMsg.toAscii());
    	this->write(Msg);
    	return true;
    }
    
    bool CSocket::hasconnected(){
    
    	return this->isReadable();
    }
    

    Main:

    int main(int argc, _TCHAR* argv[])
    {
    CSocket s(2465,"localhost");
    qDebug()<< s.hasconnected();//hier wird mir ausgegeben, das es keine verbindung gibt
    QCoreApplication oa(argc,argv);
    return oa.exec();
    }
    


  • Tschuldigung ist natürlch Port in der Überschrifft, sitze schon zu lange an dem ganzen^^



  • Ischterai schrieb:

    ich versuche nun schon den ganzen tag verzweifelt mit qt einen TcpSocket zu schreiben, bei dem ich Port und Adresse selbst setzen kann, da ich über diese Strings senden will, aber das soll halt über einen ganz bestimmten Port und einen ganz bestimmte IP passieren

    Das geht doch alles absolut problemlos mit der normalen QTcpSocket Klasse!

    Dazu hat sie die Member-Funktion connectToHost() welcher du selbstverständlich sowohl IP Adresse als auch Port übergeben kannst.



  • aber mit connectToHost bekomme ich doch nur zugriff auf andere Hosts, kann aber keinen eigenen aufmachen, über den ich dann senden kann, der zu einem anderen Socket schickt und von dort empfangen kann, oder?



  • Ich bin mir nicht ganz sicher was du meinst... du bringst da glaub ich einiges durcheinander.

    connectToHost macht jedenfalls genau das, was auch der Name der Funktion schon vermuten lässt; die Verbindung zu einem anderen Host (d.h. ein Server der auf angegebenem Port lauscht) aufbauen.
    Über diese Verbindung kannst du dann natürlich Daten senden und empfangen.


Log in to reply