Qt 从 main 启动 QTcpServer ...奇怪的行为

Posted

技术标签:

【中文标题】Qt 从 main 启动 QTcpServer ...奇怪的行为【英文标题】:Qt starting QTcpServer from main...strange behaviour 【发布时间】:2015-05-15 00:29:42 【问题描述】:

鉴于下面的两组代码,我真的很困惑为什么第一个按预期工作而第二个没有。当我使用代码 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();

感谢您的帮助,非常感谢

【问题讨论】:

您用来运行应用程序的命令行是什么?例如a.out 1234? @AnthonyKong 我在qt的运行步骤中添加了参数 【参考方案1】:

MyServer server 的范围是 if (argc == 2) 条件的大括号。因此,一旦执行超出 if 条件括号,server 就会被销毁。

在你的 if 条件之外创建server,它会起作用。

【讨论】:

哇非常感谢:)。它一定是微不足道的,不是吗。

以上是关于Qt 从 main 启动 QTcpServer ...奇怪的行为的主要内容,如果未能解决你的问题,请参考以下文章

Qt基础之三十四:QTcpSocket和QTcpServer源码分析

QT源码分析:QTcpServer

Qt creator 找不到,QTcpServer 和 QTcpSocket

QtcpServer:Qt如何获取python字符串来标记

QT QTcpServer newConnection 信号无法触发 槽

QT QTcpServer newConnection 信号无法触发 槽