QT QTcpServer ::incomingConnection(qintptr ハンドル) 起動しない?
サーバーは基本的に機能していますが、メイン関数内で作成された場合のみです。
働く:
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
TestServer server;
return a.exec();
}
動作しません (このコードはとにかくこのようには動作しません。それは単に私が何を意味するかを示すためです):
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
classA cA;
return a.exec();
}
classA::classA(QObject *parent) :
QThread(parent)
{
TestServer server;
}
メイン関数内でクラス A を作成し、AI 内で tcpserver を作成すると、サーバー自体は起動されますが、incomingConnection() 関数は実行されません。A のコンストラクターから「Server start at port ...」というメッセージが表示されるため、これを確認できます。
TestServer::TestServer(QObject *parent):
QTcpServer(parent)
{
if (this->listen(QHostAddress::Any, 2323)) {
qDebug() << "Server start at port: " << this->serverPort();
} else {
qDebug() << "Start failure";
}
}
つまり、メイン関数がクラス A と qtcpserver 関数を保持するようになりました。クライアントが接続すると、qtcpserver 関数は再び新しいスレッドを作成します。私がやりたいことは、スレッドによって受信されたメッセージをクラス A に保持することです。そのため、クラス A 内に qtcpserver を作成したいと考えています。
これについて誰か提案がありますか?A 内にサーバーを作成するにはどうすればよいですか?
ありがとう!