ich möchte eine Tcp Verbindung auf meinem Rechner aufbauen. Ich nutze Qt 5.7.1 und den mingw32 Compiler unter Windows 7. Der untere Code ist ein minimal Beispiel, welcher aber auch nicht funktioniert.
Mein Problem ist, dass das Signal newConnection() aus der Klasse QTcpServer bei mir nicht funktionieren möchte. Ich habe eine neue Connection erstellt und eig. sollte er bei einer neuen Verbindung das Signal acceptConnection() aufrufen. Das macht er jedoch nur, wenn ich waitForNewConnection(1000) hinzufüge.
Ich habe online auch einen ähnlichen Fall gefunden (nachfolgender Link). Leider ist die Lösung nicht auf mein Problem anwendbar, auch wenn ich die Lösung für mein Compiler angepasst habe.
https://forum.qt.io/topic/79311/qtcpser ... stantiated
main.ccp
Code: Alles auswählen
#include "tcpserver.h"
#include <QDebug>
int main()
{
tcpServer tServer;
return 0;
}
Code: Alles auswählen
#ifndef TCPSERVER_H
#define TCPSERVER_H
#include <QObject>
#include <QDebug>
#include <QTcpServer>
#include <QTcpSocket>
class tcpServer : public QObject
{
Q_OBJECT
public:
explicit tcpServer(QObject *parent = 0);
public slots:
void acceptConnection();
void connected();
void disconnected();
private:
QTcpServer server;
QTcpSocket socket;
};
#endif // TCPSERVER_H
Code: Alles auswählen
#include "tcpserver.h"
tcpServer::tcpServer(QObject *parent) :
QObject(parent)
{
qDebug() << connect( &server, &QTcpServer::newConnection, this, &tcpServer::acceptConnection );
qDebug() << connect( &socket, &QTcpSocket::connected, this, &tcpServer::connected );
qDebug() << connect( &socket, &QTcpSocket::disconnected, this, &tcpServer::disconnected );
if( !server.listen(QHostAddress::LocalHost,1234) ){
qDebug() << "Server: Server could not start!";
}
else{
qDebug() << "Server: Server started!";
}
socket.connectToHost(QHostAddress::LocalHost, server.serverPort());
if(!socket.waitForConnected(3000)){
qDebug() << "ServerClient: Not Connected";
}
// mit dieser Methode klappt es
// server.waitForNewConnection(1000);
}
void tcpServer::acceptConnection()
{
qDebug() << "Works only with server.waitForNewConnection(1000); ";
}
void tcpServer::connected()
{
qDebug() << "ServerClient: Connected!";
}
void tcpServer::disconnected()
{
qDebug() << "ServerClient: Disconnected!";
}
Code: Alles auswählen
QT += network
CONFIG += c++11
SOURCES += main.cpp \
tcpserver.cpp
HEADERS += \
tcpserver.h
QMAKE_LFLAGS_WINDOWS += -Wl,--stack,256000000
Grüßle
Sören