C++ 在调试模式下从未收到QTcpServer newConnection信号
由于某些原因,在调试模式下运行时,C++ 在调试模式下从未收到QTcpServer newConnection信号,c++,qt,qtnetwork,qtcpserver,C++,Qt,Qtnetwork,Qtcpserver,由于某些原因,在调试模式下运行时,newConnection信号似乎没有正确发出或处理 下面是一个示例,例如,当我将telnet连接到此服务器时,当我在发布模式下运行程序而不是在调试模式下运行程序时,会调用OnNewConnection。有什么想法吗 main.cpp 你使用阴影构建吗?是窗户吗?我怀疑您有阴影构建,并且防火墙无法与不同位置的应用程序进行通信。或者发布版本仍在运行,并保持5000端口。我完全关闭了防火墙,但这没有帮助。在任何给定的时间,我也只启动了一个进程。在QTcpServer
newConnection
信号似乎没有正确发出或处理
下面是一个示例,例如,当我将telnet连接到此服务器时,当我在发布模式下运行程序而不是在调试模式下运行程序时,会调用OnNewConnection
。有什么想法吗
main.cpp
你使用阴影构建吗?是窗户吗?我怀疑您有阴影构建,并且防火墙无法与不同位置的应用程序进行通信。或者发布版本仍在运行,并保持
5000
端口。我完全关闭了防火墙,但这没有帮助。在任何给定的时间,我也只启动了一个进程。在QTcpServer::newConnection上放置一个brekapoint,并检查它是否发出过。添加检查listen
返回的内容。似乎无法在newConnection
上设置断点,不幸的是,因为它位于外部库中,但listen
返回true!
#include "Server.h"
#include <QtWidgets/QApplication>
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
Server s;
return a.exec();
}
#ifndef SERVER_H
#define SERVER_H
#include <QtNetwork/qtcpserver.h>
class Server : public QObject {
Q_OBJECT
public:
Server();
~Server();
public slots:
void OnNewConnection();
private:
QTcpServer* server;
};
#endif
#include "Server.h"
Server::Server() {
server = new QTcpServer(this);
server->listen(QHostAddress::Any, 5000);
connect(server, SIGNAL(newConnection()), this, SLOT(OnNewConnection()));
}
Server::~Server() {
}
void Server::OnNewConnection() {
exit(0); // whatever i put here, it's not called in debug mode
}