考虑到下面的两组代码,我真的很困惑为什么第一组代码和第二组代码不能正常工作。当我用代码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();
}谢谢您的帮助,非常感谢
发布于 2015-05-15 00:48:59
MyServer server的作用域是if (argc == 2)条件的大括号。因此,一旦执行了if条件支撑,server就会被销毁。
在您的if条件之外创建server,它将工作。
https://stackoverflow.com/questions/30249644
复制相似问题