QUdpSocket aumentando a memoria!
-
Pessoal preciso de uma ajuda!
Estou implementado uma aplicação com QUdpSocket que possui evento de teclado, entretanto ao realizar um determinado evento do teclado ele tera que enviar uma mensagem pela rede. Noto que ao realizar o envio de qualquer mensagem verifico que há um aumento na memoria o que pode ser?@void MainWindow::keyPressEvent(QKeyEvent *event){
switch (event->key()) { case Qt::Key_4: //cout << "LEFT" << endl; if(posxgrab > -18) posxgrab--; break; case Qt::Key_6: //cout << "RIGHT" << endl; if(posxgrab < 18) posxgrab++; break; case Qt::Key_8: //cout << "UP" << endl; if(poszgrab > -18) poszgrab--; break; case Qt::Key_2: //cout << "DOWN" << endl; if(poszgrab < 18) poszgrab++; break;
........
default:
event->ignore();
}QString msgsGrab = "$GRAB,1,1," + QString::number(anglegrab) + ".00," + QString::number(posxgrab) + ".00," + QString::number(alturagrab) + ".00," + QString::number(poszgrab) + ".00," + QString::number(rotxgrab) + ".00," + QString::number(rotygrab) + ".00," + QString::number(rotzgrab) + ".00,000.00,000.00,000.00;";
//chamada para o envio de msgs
enviaMsgGrabTeclado(msgsGrab);} void MainWindow::enviaMsgGrabTeclado(QString msgsGrab) { QByteArray message = msgsGrab.toAscii().constData(); QHostAddress adress; if(!IPHost.isNull() || PortClient != 0) { adress.setAddress(IPHost); socketsender->writeDatagram(message.data(),adress,PortClient); msgsGrab.clear(); } else{}
}@
Obrigado!
-
Tente adicionar a chamada abaixo após escrever o datagrama.
[code]
socketsender->flush()
[/code]Vai algumas outras dicar para melhorar desempenho do seu programa baseando-se no código postado:
- usar referencia na passagem de parâmetros;
- usar QByteArray no lugar de QString pois na hora de escrever o datagrama, vc converte QString para QByteArray
- usar o método "arg()" do objeto QString/QByteArray para construir seu datagrama
[]'s