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,它将起作用。