Cześć, jak w temacie. Mam program w napisany w Qt. Po kompilacji w trybie debug działa bez problemu zaś w trybie release uruchamia się, ale nie emituje sygnału &QTcpServer::newConnection
. Oto fragment kodu:
void Server::startServer()
{
chatServer = new QTcpServer();
chatServer->setMaxPendingConnections(10);
connect(chatServer, &QTcpServer::newConnection, this, &Server::newClientConnection);
if (connectToDatabase())
{
qDebug() << "Connected to database!";
if (chatServer->listen(QHostAddress::Any, 1234))
{
qDebug() << "Server has started. Listening to port 1234.";
}
else
{
qDebug() << "Server failed to start. Error: " + chatServer->errorString();
}
}
else
{
qDebug() << "Failed to connect to database.";
}
}
void Server::newClientConnection()
{
QTcpSocket *client = chatServer->nextPendingConnection();
QString ipAddress = client->peerAddress().toString();
int port = client->peerPort();
connect(client, &QTcpSocket::disconnected, this, &Server::socketDisconnected);
connect(client, &QTcpSocket::readyRead, this, &Server::socketReadyRead);
connect(client, &QTcpSocket::stateChanged, this, &Server::socketStateChanged);
qDebug() << "Socket connected from " + ipAddress.mid(IPV4) + ":" + QString::number(port);
}
Może to trochę wróżenie z fusów lecz nie wiem gdzie mam szukać przyczyny. Sygnał &QTcpServer::newConnection
w trybie debug jest emitowany, gdyż metodaServer::newClientConnection()
wykonuje się.
Wireshark wypluwa mi coś takiego w trybie release:
Zaś w trybie debug: