gpt4 book ai didi

c++ - QTcpServer 不工作

转载 作者:行者123 更新时间:2023-11-28 02:21:11 25 4
gpt4 key购买 nike

我正在尝试使用 QT 在 C++ 中创建一个 TCP 服务器。我有代码,但是当我尝试使用 SocketTest 连接到服务器时,它说连接被拒绝(很可能是由于服务器未运行)。

这是在我的 tcplistener.h 中:

#ifndef TCPLISTENER_H
#define TCPLISTENER_H

#include <QtNetwork/QTcpSocket>
#include <QtNetwork/QTcpServer>

class tcp_listener : public QTcpServer
{
Q_OBJECT
signals:
public slots:
void newConnectionFromServer()
{
QTcpSocket* newConnection = nextPendingConnection();
qDebug("New connection from %d", newConnection->peerAddress().toIPv4Address());
}
public:
tcp_listener(QObject *parent = 0)
: QTcpServer(parent)
{
listen(QHostAddress::Any, 30000);
connect(this, SIGNAL(newConnection()), SLOT(newConnectionFromServer()));
}
};

#endif // TCPLISTENER_H

这是在我的 engine.h 中:

#ifndef ENGINE_H
#define ENGINE_H

#include <QCoreApplication>

#include "tcplistener.h"

class engine
{
public:
void init()
{
qDebug("Initializing AuraEmu...");

tcp_listener list();
}
};

#endif // ENGINE_H

这是我的 main.cpp:

#include <QCoreApplication>

#include "engine.h"

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

engine eng = engine();
eng.init();

return a.exec();
}

有人知道问题出在哪里吗?

最佳答案

另一个答案和我之前的评论已经涵盖了你做错的地方,所以我只提供解决方案。

我添加评论是因为您说您来自 Java 和 C#,但实际上,不要尝试像使用 Java 或 C# 一样编写 C++,因为它不是。

class engine
{
public:
void init()
{
qDebug("Initializing AuraEmu...");
tcp_listener *list = new tcp_listener(); // Allocate on the heap instead of the stack.
}

~engine()
{
delete list; // C++ is an UNMANAGED language, there is no garbage collector
}
private:
tcp_listener *list; // This is a pointer to an object.
};

关于c++ - QTcpServer 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32415528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com