|  | 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`.