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 creator 找不到,QTcpServer 和 QTcpSocket