...
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()));
}
}
|