Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
//muodostimeen varaukset ja liitynnät
    //varataan udpSocket muuttujalle muistia
    udpSocket = new QUdpSocket(this);
    // liitetään socket porttiin
    udpSocket->bind(45454, QUdpSocket::ShareAddress);

 ...

void Dialog::on_sendMessage_clicked()
{
    QString viesti=ui->lineEdit->text();//luetaan teksti lineEdit ikkunasta
    QByteArray datagram;//esitellään muuttuja, joka sisältää tietoa 8:n bitin pätkissä
    datagram.append(viesti);//lisätään viesti muuttujaan
    //kirjoitetaan viesti sockettiin
    udpSocket->writeDatagram(datagram.data(), datagram.size(),QHostAddress::Broadcast,45454);
}

Udp-asiakas

Projekti- ja otsikkotiedotoihin tehdään samat lisäykset kuin palvelimessa.

Esimerkiksi muodostimessa tehdään taas liitäntä ja liitetään udpSocketin "valmis signaali" tiedon vastaanottajaan.

Code Block

    udpSocket = new QUdpSocket(this);
    udpSocket->bind(45454, QUdpSocket::ShareAddress);
    connect(udpSocket, SIGNAL(readyRead()),this, SLOT(processPendingDatagrams()));

Ja vielä tehhdään tiedolle vastaanottaja.

Code Block

void Dialog::processPendingDatagrams()
{
    //esitellään muuttuja tavujonolle
    QByteArray datagram;
    //otetaan dataa vastaan niin kaun kuin on tulossa
    while (udpSocket->hasPendingDatagrams()) {
        //sovitetaan muuttuja tulevaan dataan
        datagram.resize(udpSocket->pendingDatagramSize());
        //luetaan data muuttujaan
        udpSocket->readDatagram(datagram.data(), datagram.size());
        //esitetään muuttuja näytöllä
        ui->label->setText(tr("Received: \"%1\"") .arg(datagram.data()));
    }
}