You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

QByteArray

QDataStream

QUdpSocket

#include "sender.h"

SenderReceiver::SenderReceiver(QObject *parent) :
    QObject(parent)
{
    sendUdpSocket = new QUdpSocket(0);
    receiveUdpSocket = new QUdpSocket(0);
    receiveUdpSocket->bind(45455,QUdpSocket::ShareAddress);
    connect(receiveUdpSocket, SIGNAL(readyRead()), this, SLOT(processPendingDatagrams()));
}

//viestien lahetys
void SenderReceiver::broadcastDatagram(QVector<float> v)
{
    int error,i;
    QByteArray datagram;
    qDebug() << v;
    QDataStream out (&datagram,QIODevice::WriteOnly);
    foreach(float f,v)
    {
        out << f;
    }
    //kirjoitetaan udp-viesti, mahdollinen virhe kannattaisi tarkastaa
    error=sendUdpSocket->writeDatagram(datagram.data(), datagram.size(), QHostAddress::Broadcast, 45455);
}

//viestien vastaanotto
void SenderReceiver::processPendingDatagrams()
{
    float f;
    //onko vastaanotettu viesteja
    while (receiveUdpSocket->hasPendingDatagrams()) {
         QByteArray datagram;
         datagram.resize(receiveUdpSocket->pendingDatagramSize());
         receiveUdpSocket->readDatagram(datagram.data(), datagram.size());
         QDataStream in(datagram);
         while (!in.atEnd()){
             in >> f;
             v2 << f;
         }
         qDebug() << v2;
         emit sendReceivedData(v2);
     }
}
 #ifndef SENDER_H
#define SENDER_H

#include <QObject>
#include <QUdpSocket>

class SenderReceiver : public QObject
{
    Q_OBJECT
public:
    explicit SenderReceiver(QObject *parent = 0);
    QUdpSocket *sendUdpSocket;
    QUdpSocket *receiveUdpSocket;
    void broadcastDatagram(QVector<float> v);
    void testia();
    QVector<float> v2;
signals:
    void sendReceivedData(QVector<float> v2);
public slots:
    //viestejä vastaanottava slot
    void processPendingDatagrams();
};

#endif // SENDER_H
  • No labels
You must log in to comment.