Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qabstractsocket.h
Go to the documentation of this file.
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
4#ifndef QABSTRACTSOCKET_H
5#define QABSTRACTSOCKET_H
6
7#include <QtNetwork/qtnetworkglobal.h>
8#if QT_VERSION >= QT_VERSION_CHECK(7, 0, 0)
9#include <QtNetwork/qabstractsocket.h>
10#endif
11#ifdef Q_QDOC
12#include <QtNetwork/qhostaddress.h>
13#endif
14#include <QtCore/qiodevice.h>
15#include <QtCore/qobject.h>
16#ifndef QT_NO_DEBUG_STREAM
17#include <QtCore/qdebug.h>
18#endif
19
21
22
23class QHostAddress;
24#ifndef QT_NO_NETWORKPROXY
25class QNetworkProxy;
26#endif
28class QAuthenticator;
29
30class Q_NETWORK_EXPORT QAbstractSocket : public QIODevice
31{
33 Q_MOC_INCLUDE(<QtNetwork/qauthenticator.h>)
34
35public:
40 UnknownSocketType = -1
41 };
42 Q_ENUM(SocketType)
43
44#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0)
45 enum NetworkLayerProtocol {
46 IPv4Protocol,
47 IPv6Protocol,
48 AnyIPProtocol,
49 UnknownNetworkLayerProtocol = -1
50 };
51 Q_ENUM(NetworkLayerProtocol)
52#else
53 // compatibility with Qt 4 to 6
55 static constexpr auto IPv4Protocol = QHostAddress::IPv4Protocol;
56 static constexpr auto IPv6Protocol = QHostAddress::IPv6Protocol;
57 static constexpr auto AnyIPProtocol = QHostAddress::AnyIPProtocol;
58 static constexpr auto UnknownNetworkLayerProtocol = QHostAddress::UnknownNetworkLayerProtocol;
59#endif
60
88 Q_ENUM(SocketError)
98 Q_ENUM(SocketState)
100 LowDelayOption, // TCP_NODELAY
101 KeepAliveOption, // SO_KEEPALIVE
102 MulticastTtlOption, // IP_MULTICAST_TTL
103 MulticastLoopbackOption, // IP_MULTICAST_LOOPBACK
107 PathMtuSocketOption // IP_MTU
108 };
109 Q_ENUM(SocketOption)
110 enum BindFlag {
111 DefaultForPlatform = 0x0,
112 ShareAddress = 0x1,
113 DontShareAddress = 0x2,
114 ReuseAddressHint = 0x4
115 };
116 Q_DECLARE_FLAGS(BindMode, BindFlag)
118 PauseNever = 0x0,
119 PauseOnSslErrors = 0x1
120 };
121 Q_DECLARE_FLAGS(PauseModes, PauseMode)
122
123 QAbstractSocket(SocketType socketType, QObject *parent);
124 virtual ~QAbstractSocket();
125
126 virtual void resume(); // to continue after proxy authentication required, SSL errors etc.
127 PauseModes pauseMode() const;
128 void setPauseMode(PauseModes pauseMode);
129
130 virtual bool bind(const QHostAddress &address, quint16 port = 0,
131 BindMode mode = DefaultForPlatform);
132#if QT_VERSION >= QT_VERSION_CHECK(7,0,0) || defined(Q_QDOC)
133 bool bind(QHostAddress::SpecialAddress addr, quint16 port = 0, BindMode mode = DefaultForPlatform)
134 { return bind(QHostAddress(addr), port, mode); }
135 bool bind(quint16 port = 0, BindMode mode = DefaultForPlatform)
136 { return bind(QHostAddress::Any, port, mode); }
137#else
138 bool bind(quint16 port = 0, BindMode mode = DefaultForPlatform);
139#endif
140
141 virtual void connectToHost(const QString &hostName, quint16 port, OpenMode mode = ReadWrite, NetworkLayerProtocol protocol = AnyIPProtocol);
142 void connectToHost(const QHostAddress &address, quint16 port, OpenMode mode = ReadWrite);
143 virtual void disconnectFromHost();
144
145 bool isValid() const;
146
147 qint64 bytesAvailable() const override;
148 qint64 bytesToWrite() const override;
149
150 quint16 localPort() const;
151 QHostAddress localAddress() const;
152 quint16 peerPort() const;
153 QHostAddress peerAddress() const;
154 QString peerName() const;
155
156 qint64 readBufferSize() const;
157 virtual void setReadBufferSize(qint64 size);
158
159 void abort();
160
161 virtual qintptr socketDescriptor() const;
162 virtual bool setSocketDescriptor(qintptr socketDescriptor, SocketState state = ConnectedState,
163 OpenMode openMode = ReadWrite);
164
165 virtual void setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value);
166 virtual QVariant socketOption(QAbstractSocket::SocketOption option);
167
168 SocketType socketType() const;
169 SocketState state() const;
170 SocketError error() const;
171
172 // from QIODevice
173 void close() override;
174 bool isSequential() const override;
175 bool flush();
176
177 // for synchronous access
178 virtual bool waitForConnected(int msecs = 30000);
179 bool waitForReadyRead(int msecs = 30000) override;
180 bool waitForBytesWritten(int msecs = 30000) override;
181 virtual bool waitForDisconnected(int msecs = 30000);
182
183#ifndef QT_NO_NETWORKPROXY
184 void setProxy(const QNetworkProxy &networkProxy);
185 QNetworkProxy proxy() const;
186 QString protocolTag() const;
187 void setProtocolTag(const QString &tag);
188#endif
189
191 void hostFound();
192 void connected();
196#ifndef QT_NO_NETWORKPROXY
198#endif
199
200protected:
201 qint64 readData(char *data, qint64 maxlen) override;
202 qint64 readLineData(char *data, qint64 maxlen) override;
203 qint64 skipData(qint64 maxSize) override;
204 qint64 writeData(const char *data, qint64 len) override;
205
206 void setSocketState(SocketState state);
207 void setSocketError(SocketError socketError);
208 void setLocalPort(quint16 port);
209 void setLocalAddress(const QHostAddress &address);
210 void setPeerPort(quint16 port);
211 void setPeerAddress(const QHostAddress &address);
212 void setPeerName(const QString &name);
213
215
216private:
217 Q_DECLARE_PRIVATE(QAbstractSocket)
218 Q_DISABLE_COPY_MOVE(QAbstractSocket)
219
220 Q_PRIVATE_SLOT(d_func(), void _q_connectToNextAddress())
221 Q_PRIVATE_SLOT(d_func(), void _q_startConnecting(const QHostInfo &))
222 Q_PRIVATE_SLOT(d_func(), void _q_abortConnectionAttempt())
223 Q_PRIVATE_SLOT(d_func(), void _q_testConnection())
224};
225
226
229
230#ifndef QT_NO_DEBUG_STREAM
233#endif
234
236
238 QAbstractSocket__SocketState, Q_NETWORK_EXPORT)
240 QAbstractSocket__SocketError, Q_NETWORK_EXPORT)
241
242#endif // QABSTRACTSOCKET_H
The QAbstractSocket class provides the base functionality common to all socket types.
SocketState
This enum describes the different states in which a socket can be.
void stateChanged(QAbstractSocket::SocketState)
This signal is emitted whenever QAbstractSocket's state changes.
bool bind(quint16 port=0, BindMode mode=DefaultForPlatform)
void errorOccurred(QAbstractSocket::SocketError)
void connected()
This signal is emitted after connectToHost() has been called and a connection has been successfully e...
void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator)
SocketError
This enum describes the socket errors that can occur.
SocketType
This enum describes the transport layer protocol.
void disconnected()
This signal is emitted when the socket has been disconnected.
void hostFound()
This signal is emitted after connectToHost() has been called and the host lookup has succeeded.
bool bind(QHostAddress::SpecialAddress addr, quint16 port=0, BindMode mode=DefaultForPlatform)
The QAuthenticator class provides an authentication object.
\inmodule QtCore
The QHostAddress class provides an IP address.
SpecialAddress
\value Null The null address object.
@ UnknownNetworkLayerProtocol
The QHostInfo class provides static functions for host name lookups.
Definition qhostinfo.h:19
\inmodule QtCore \reentrant
Definition qiodevice.h:34
The QNetworkProxy class provides a network layer proxy.
\inmodule QtCore
Definition qobject.h:103
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
\inmodule QtCore
Definition qvariant.h:65
else opt state
[0]
Combined button and popup list for selecting options.
AudioChannelLayoutTag tag
DBusConnection const char DBusError * error
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
EGLOutputPortEXT port
static QT_BEGIN_NAMESPACE const char * socketType(QSocketNotifier::Type type)
#define Q_DECLARE_FLAGS(Flags, Enum)
Definition qflags.h:174
#define Q_DECLARE_OPERATORS_FOR_FLAGS(Flags)
Definition qflags.h:194
#define QT_DECL_METATYPE_EXTERN_TAGGED(TYPE, TAG, EXPORT)
Definition qmetatype.h:1376
GLenum mode
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLuint name
GLenum const void * addr
GLuint GLuint64EXT address
GLuint GLenum option
GLenum GLsizei len
#define Q_ENUM(x)
#define Q_OBJECT
#define Q_MOC_INCLUDE(...)
#define Q_PRIVATE_SLOT(d, signature)
#define Q_SIGNALS
unsigned short quint16
Definition qtypes.h:48
long long qint64
Definition qtypes.h:60
ptrdiff_t qintptr
Definition qtypes.h:166
future resume()
sock connectToHost(url.host(), url.port(80))
device waitForReadyRead(deadline)
QDataStream & operator<<(QDataStream &out, const MyClass &myObj)
[4]
void writeData(const QByteArray &data)
QByteArray readData()
QNetworkProxy proxy
[0]
serverSocket setProxy(QNetworkProxy::NoProxy)
[0]
socket disconnectFromHost()
[0]
socketLayer bind(QHostAddress::Any, 4000)