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!



  • Mas você percebe um aumento gradativo a cada mensagem enviada ou apenas no inicio?



  • 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


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.