1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
5#ifndef QUDPSOCKET_H
6#define QUDPSOCKET_H
7
8#include <QtNetwork/qtnetworkglobal.h>
9#include <QtNetwork/qabstractsocket.h>
10#include <QtNetwork/qhostaddress.h>
11
12QT_BEGIN_NAMESPACE
13
14
15#ifndef QT_NO_UDPSOCKET
16
17class QNetworkDatagram;
18class QNetworkInterface;
19class QUdpSocketPrivate;
20
21class Q_NETWORK_EXPORT QUdpSocket : public QAbstractSocket
22{
23 Q_OBJECT
24public:
25 explicit QUdpSocket(QObject *parent = nullptr);
26 virtual ~QUdpSocket();
27
28#if QT_VERSION < QT_VERSION_CHECK(7,0,0) && !defined(Q_QDOC)
29 // ### Qt7: move into QAbstractSocket
30 using QAbstractSocket::bind;
31 bool bind(QHostAddress::SpecialAddress addr, quint16 port = 0, BindMode mode = DefaultForPlatform)
32 { return bind(address: QHostAddress(addr), port, mode); }
33#endif
34
35#ifndef QT_NO_NETWORKINTERFACE
36 bool joinMulticastGroup(const QHostAddress &groupAddress);
37 bool joinMulticastGroup(const QHostAddress &groupAddress,
38 const QNetworkInterface &iface);
39 bool leaveMulticastGroup(const QHostAddress &groupAddress);
40 bool leaveMulticastGroup(const QHostAddress &groupAddress,
41 const QNetworkInterface &iface);
42
43 QNetworkInterface multicastInterface() const;
44 void setMulticastInterface(const QNetworkInterface &iface);
45#endif
46
47 bool hasPendingDatagrams() const;
48 qint64 pendingDatagramSize() const;
49 QNetworkDatagram receiveDatagram(qint64 maxSize = -1);
50 qint64 readDatagram(char *data, qint64 maxlen, QHostAddress *host = nullptr, quint16 *port = nullptr);
51
52 qint64 writeDatagram(const QNetworkDatagram &datagram);
53 qint64 writeDatagram(const char *data, qint64 len, const QHostAddress &host, quint16 port);
54 inline qint64 writeDatagram(const QByteArray &datagram, const QHostAddress &host, quint16 port)
55 { return writeDatagram(data: datagram.constData(), len: datagram.size(), host, port); }
56
57private:
58 Q_DISABLE_COPY_MOVE(QUdpSocket)
59 Q_DECLARE_PRIVATE(QUdpSocket)
60};
61
62#endif // QT_NO_UDPSOCKET
63
64QT_END_NAMESPACE
65
66#endif // QUDPSOCKET_H
67

source code of qtbase/src/network/socket/qudpsocket.h