8#include <QtNetwork/qtnetworkglobal.h>
9#include <QtNetwork/qabstractsocket.h>
10#include <QtNetwork/qhostaddress.h>
15#ifndef QT_NO_UDPSOCKET
17class QNetworkDatagram;
18class QNetworkInterface;
21class Q_NETWORK_EXPORT
QUdpSocket :
public QAbstractSocket
25 explicit QUdpSocket(QObject *parent =
nullptr);
26 virtual ~QUdpSocket();
28#if QT_VERSION < QT_VERSION_CHECK(7
,0
,0
) && !defined(Q_QDOC)
30 using QAbstractSocket::bind;
31 bool bind(QHostAddress::SpecialAddress addr, quint16 port = 0, BindMode mode = DefaultForPlatform)
32 {
return bind(QHostAddress(addr), port, mode); }
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);
43 QNetworkInterface multicastInterface()
const;
44 void setMulticastInterface(
const QNetworkInterface &iface);
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);
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(datagram.constData(), datagram.size(), host, port); }
58 Q_DISABLE_COPY_MOVE(QUdpSocket)
59 Q_DECLARE_PRIVATE(QUdpSocket)
virtual bool beginAuthenticate(QTcpSocket *socket, bool *completed)
virtual bool continueAuthenticate(QTcpSocket *socket, bool *completed)
virtual QString errorString()
bool seal(const QByteArray &buf, QByteArray *sealedBuf)
virtual ~QSocks5Authenticator()
bool unSeal(QTcpSocket *sealedSocket, QByteArray *buf)
bool unSeal(const QByteArray &sealedBuf, QByteArray *buf)
void add(qintptr socketDescriptor, QSocks5BindData *bindData)
QHash< qintptr, QSocks5BindData * > store
void timerEvent(QTimerEvent *event) override
This event handler can be reimplemented in a subclass to receive timer events for the object.
QSocks5BindData * retrieve(qintptr socketDescriptor)
bool contains(qintptr socketDescriptor)
bool beginAuthenticate(QTcpSocket *socket, bool *completed) override
bool continueAuthenticate(QTcpSocket *socket, bool *completed) override
QSocks5PasswordAuthenticator(const QString &userName, const QString &password)
QString errorString() override
QSocks5UdpAssociateData * udpData
void parseRequestMethodReply()
void _q_controlSocketReadNotification()
void setErrorState(Socks5State state, const QString &extraMessage=QString())
void _q_controlSocketStateChanged(QAbstractSocket::SocketState)
bool readNotificationActivated
@ AddressTypeNotSupported
bool writeNotificationEnabled
void _q_controlSocketDisconnected()
void emitReadNotification()
void _q_emitPendingReadNotification()
@ AuthenticationMethodsSent
void _q_emitPendingWriteNotification()
~QSocks5SocketEnginePrivate()
QSocks5ConnectData * connectData
void parseNewConnection()
void parseAuthenticatingReply()
void _q_controlSocketErrorOccurred(QAbstractSocket::SocketError)
bool readNotificationEnabled
bool connectionNotificationPending
bool writeNotificationActivated
QByteArray receivedHeaderFragment
QSocks5BindData * bindData
bool readNotificationPending
void _q_controlSocketConnected()
bool writeNotificationPending
void emitConnectionNotification()
void setErrorState(Socks5State state, Socks5Error socks5error)
void emitWriteNotification()
bool waitForConnected(QDeadlineTimer deadline, bool *timedOut)
void _q_emitPendingConnectionNotification()
void parseAuthenticationMethodReply()
void _q_controlSocketBytesWritten()
void _q_udpSocketReadNotification()
bool exceptNotificationEnabled
void initialize(Socks5Mode socks5Mode)
static int qt_socks5_get_host_address_and_port(const QByteArray &buf, QHostAddress *pAddress, quint16 *pPort, int *pPos)
#define S5_AUTHMETHOD_NONE
static const int MaxWriteBufferSize
static bool qt_socks5_set_host_address_and_port(const QHostAddress &address, quint16 port, QByteArray *pBuf)
static QString dump(const QByteArray &)
#define S5_PASSWORDAUTH_VERSION
#define Q_INIT_CHECK(returnValue)
#define S5_AUTHMETHOD_NOTACCEPTABLE
static int nextDescriptor()
static QString s5StateToString(QSocks5SocketEnginePrivate::Socks5State)
static constexpr auto Socks5BlockingBindTimeout
static bool qt_socks5_set_host_name_and_port(const QString &hostname, quint16 port, QByteArray *pBuf)
QHostAddress localAddress
QSocks5Authenticator * authenticator
QTcpSocket * controlSocket
QQueue< QSocks5RevivedDatagram > pendingDatagrams
QHostAddress associateAddress