Home · Overviews · Examples 

QUdpSocket Class Reference
[com.trolltech.qt.network module]

The QUdpSocket class provides a UDP socket. More...

Inherits QAbstractSocket.


Detailed Description

The QUdpSocket class provides a UDP socket.

UDP (User Datagram Protocol) is a lightweight, unreliable, datagram-oriented, connectionless protocol. It can be used when reliability isn't important. QUdpSocket is a subclass of QAbstractSocket that allows you to send and receive UDP datagrams.

The most common way to use this class is to bind to an address and port using bind(), then call writeDatagram() and readDatagram() to transfer data. If you want to use the standard QIODevice functions read, readLine, write, etc., you must first connect the socket directly to a peer by calling connectToHost().

The socket emits the bytesWritten signal every time a datagram is written to the network. If you just want to send datagrams, you don't need to call bind().

The readyRead signal is emitted whenever datagrams arrive. In that case, hasPendingDatagrams returns true. Call pendingDatagramSize to obtain the size of the first pending datagram, and readDatagram() to read it.

Example:

    void Server::initSocket()
    {
        udpSocket = new QUdpSocket(this);
        udpSocket->bind(QHostAddress::LocalHost, 7755);

        connect(udpSocket, SIGNAL(readyRead()),
                this, SLOT(readPendingDatagrams()));
    }

    void Server::readPendingDatagrams()
    {
        while (udpSocket->hasPendingDatagrams()) {
            QByteArray datagram;
            datagram.resize(udpSocket->pendingDatagramSize());
            QHostAddress sender;
            quint16 senderPort;

            udpSocket->readDatagram(datagram.data(), datagram.size(),
                                    &sender, &senderPort);

            processTheDatagram(datagram);
        }
    }

With QUdpSocket, you can also establish a virtual connection to a UDP server using connectToHost() and then use read and write to exchange datagrams without specifying the receiver for each datagram.

The Broadcast Sender and Broadcast Receiver examples illustrate how to use QUdpSocket in applications.

See also QTcpSocket.


Copyright © 2008 Trolltech Trademarks
Qt Jambi 4.3.4_01