diff --git a/src/network/kernel/qhostaddress.h b/src/network/kernel/qhostaddress.h index 2b61cbba14b..4b1bdfced81 100644 --- a/src/network/kernel/qhostaddress.h +++ b/src/network/kernel/qhostaddress.h @@ -115,6 +115,8 @@ public: bool setAddress(const QString &address); void setAddress(SpecialAddress address); + // ### Qt7: consider moving NetworkLayerProtocol to QHostAddress so we + // don't depend on QAbstractSocket QAbstractSocket::NetworkLayerProtocol protocol() const; quint32 toIPv4Address(bool *ok = nullptr) const; Q_IPV6ADDR toIPv6Address() const; diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp index 31847c01428..16819404f4a 100644 --- a/src/network/socket/qabstractsocket.cpp +++ b/src/network/socket/qabstractsocket.cpp @@ -1604,6 +1604,19 @@ bool QAbstractSocketPrivate::bind(const QHostAddress &address, quint16 port, QAb } /*! + \fn bool QAbstractSocket::bind(QHostAddress::SpecialAddress addr, quint16 port, BindMode mode) + \since 6.2 + \overload + + Binds to the special address \a addr on port \a port, using the BindMode \a + mode. + + By default, the socket is bound using the DefaultForPlatform BindMode. + If a port is not specified, a random port is chosen. +*/ + +/*! + \fn bool QAbstractSocket::bind(quint16 port, BindMode mode) \since 5.0 \overload @@ -1612,10 +1625,12 @@ bool QAbstractSocketPrivate::bind(const QHostAddress &address, quint16 port, QAb By default, the socket is bound using the DefaultForPlatform BindMode. If a port is not specified, a random port is chosen. */ +#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0) bool QAbstractSocket::bind(quint16 port, BindMode mode) { return bind(QHostAddress::Any, port, mode); } +#endif /*! Returns \c true if the socket is valid and ready for use; otherwise diff --git a/src/network/socket/qabstractsocket.h b/src/network/socket/qabstractsocket.h index bf1ff7e9a2d..5874ddb8e80 100644 --- a/src/network/socket/qabstractsocket.h +++ b/src/network/socket/qabstractsocket.h @@ -148,7 +148,15 @@ public: virtual bool bind(const QHostAddress &address, quint16 port = 0, BindMode mode = DefaultForPlatform); +#if QT_VERSION >= QT_VERSION_CHECK(7,0,0) || defined(Q_CLANG_QDOC) + // ### Qt7: this requires that QHostAddress stop depending on QAbstractSocket::NetworkLayerProtocol + bool bind(QHostAddress::SpecialAddress addr, quint16 port = 0, BindMode mode = DefaultForPlatform) + { return bind(QHostAddress(addr), port, mode); } + bool bind(quint16 port = 0, BindMode mode = DefaultForPlatform) + { retrurn bind(QHostAddress::Any, port, mode); } +#else bool bind(quint16 port = 0, BindMode mode = DefaultForPlatform); +#endif virtual void connectToHost(const QString &hostName, quint16 port, OpenMode mode = ReadWrite, NetworkLayerProtocol protocol = AnyIPProtocol); void connectToHost(const QHostAddress &address, quint16 port, OpenMode mode = ReadWrite); diff --git a/src/network/socket/qtcpsocket.h b/src/network/socket/qtcpsocket.h index e52eddfdbd8..b0b296654ca 100644 --- a/src/network/socket/qtcpsocket.h +++ b/src/network/socket/qtcpsocket.h @@ -42,6 +42,7 @@ #include #include +#include #include QT_BEGIN_NAMESPACE @@ -56,6 +57,13 @@ public: explicit QTcpSocket(QObject *parent = nullptr); virtual ~QTcpSocket(); +#if QT_VERSION < QT_VERSION_CHECK(7,0,0) && !defined(Q_CLANG_QDOC) + // ### Qt7: move into QAbstractSocket + using QAbstractSocket::bind; + bool bind(QHostAddress::SpecialAddress addr, quint16 port = 0, BindMode mode = DefaultForPlatform) + { return bind(QHostAddress(addr), port, mode); } +#endif + protected: QTcpSocket(QTcpSocketPrivate &dd, QObject *parent = nullptr); QTcpSocket(QAbstractSocket::SocketType socketType, QTcpSocketPrivate &dd, diff --git a/src/network/socket/qudpsocket.h b/src/network/socket/qudpsocket.h index e2ddba1362e..d68a3d16aaa 100644 --- a/src/network/socket/qudpsocket.h +++ b/src/network/socket/qudpsocket.h @@ -60,6 +60,13 @@ public: explicit QUdpSocket(QObject *parent = nullptr); virtual ~QUdpSocket(); +#if QT_VERSION < QT_VERSION_CHECK(7,0,0) && !defined(Q_CLANG_QDOC) + // ### Qt7: move into QAbstractSocket + using QAbstractSocket::bind; + bool bind(QHostAddress::SpecialAddress addr, quint16 port = 0, BindMode mode = DefaultForPlatform) + { return bind(QHostAddress(addr), port, mode); } +#endif + #ifndef QT_NO_NETWORKINTERFACE bool joinMulticastGroup(const QHostAddress &groupAddress); bool joinMulticastGroup(const QHostAddress &groupAddress,