Qt 从 main 启动 QTcpServer...奇怪的行为
Qt starting QTcpServer from main...strange behaviour
鉴于下面的两组代码,我真的很困惑为什么第一组按预期工作而第二组没有。当我使用代码 A 启动我的应用程序时,我可以从外部客户端成功连接到服务器,在我的例子中是 telnet。但是,当我使用代码 B 运行 时,客户端无法连接,在 telnet 上我收到无法连接错误。 server
实例在启动后会被杀死吗?虽然事件循环在两组代码上都启动了,但为什么它会在一组而不是另一组上运行呢?
代码 A
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString port(argv[1]);
bool convert;
int portNum = port.toInt(&convert);
MyServer server;
server.startServer(portNum);
return a.exec();
}
代码 B
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
if(argc == 2){
QString port(argv[1]);
bool convert;
int portNum = port.toInt(&convert);
MyServer server;
server.startServer(portNum);
}
return a.exec();
}
感谢您的帮助,非常感谢
你的 MyServer server
的范围是 if (argc == 2)
条件的大括号。因此,一旦 if 条件括号执行完毕,server
就会被销毁。
在您的 if 条件之外创建 server
,它将起作用。
鉴于下面的两组代码,我真的很困惑为什么第一组按预期工作而第二组没有。当我使用代码 A 启动我的应用程序时,我可以从外部客户端成功连接到服务器,在我的例子中是 telnet。但是,当我使用代码 B 运行 时,客户端无法连接,在 telnet 上我收到无法连接错误。 server
实例在启动后会被杀死吗?虽然事件循环在两组代码上都启动了,但为什么它会在一组而不是另一组上运行呢?
代码 A
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString port(argv[1]);
bool convert;
int portNum = port.toInt(&convert);
MyServer server;
server.startServer(portNum);
return a.exec();
}
代码 B
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
if(argc == 2){
QString port(argv[1]);
bool convert;
int portNum = port.toInt(&convert);
MyServer server;
server.startServer(portNum);
}
return a.exec();
}
感谢您的帮助,非常感谢
你的 MyServer server
的范围是 if (argc == 2)
条件的大括号。因此,一旦 if 条件括号执行完毕,server
就会被销毁。
在您的 if 条件之外创建 server
,它将起作用。