54 Q_MOC_INCLUDE(<QtNetwork/qauthenticator.h>)
57 static QAbstractSocketEngine *createSocketEngine(QAbstractSocket::SocketType socketType,
const QNetworkProxy &, QObject *parent);
58 static QAbstractSocketEngine *createSocketEngine(qintptr socketDescriptor, QObject *parent);
60 QAbstractSocketEngine(QObject *parent =
nullptr);
63 NonBlockingSocketOption,
64 BroadcastSocketOption,
65 ReceiveBufferSocketOption,
66 SendBufferSocketOption,
73 MulticastLoopbackOption,
75 ReceivePacketInformation,
77 MaxStreamsSocketOption,
82 enum PacketHeaderOption {
84 WantDatagramSender = 0x01,
85 WantDatagramDestination = 0x02,
86 WantDatagramHopLimit = 0x04,
87 WantStreamNumber = 0x08,
88 WantEndOfRecord = 0x10,
92 Q_DECLARE_FLAGS(PacketHeaderOptions, PacketHeaderOption)
94 virtual bool initialize(QAbstractSocket::SocketType type, QAbstractSocket::NetworkLayerProtocol protocol = QAbstractSocket::IPv4Protocol) = 0;
96 virtual bool initialize(qintptr socketDescriptor, QAbstractSocket::SocketState socketState = QAbstractSocket::ConnectedState) = 0;
98 virtual qintptr socketDescriptor()
const = 0;
100 virtual bool isValid()
const = 0;
102 virtual bool connectToHost(
const QHostAddress &address, quint16 port) = 0;
103 virtual bool connectToHostByName(
const QString &name, quint16 port) = 0;
104 virtual bool bind(
const QHostAddress &address, quint16 port) = 0;
105 virtual bool listen(
int backlog) = 0;
106 virtual qintptr accept() = 0;
107 virtual void close() = 0;
109 virtual qint64 bytesAvailable()
const = 0;
111 virtual qint64 read(
char *data, qint64 maxlen) = 0;
112 virtual qint64 write(
const char *data, qint64 len) = 0;
114#ifndef QT_NO_UDPSOCKET
115#ifndef QT_NO_NETWORKINTERFACE
116 virtual bool joinMulticastGroup(
const QHostAddress &groupAddress,
117 const QNetworkInterface &iface) = 0;
118 virtual bool leaveMulticastGroup(
const QHostAddress &groupAddress,
119 const QNetworkInterface &iface) = 0;
120 virtual QNetworkInterface multicastInterface()
const = 0;
121 virtual bool setMulticastInterface(
const QNetworkInterface &iface) = 0;
124 virtual bool hasPendingDatagrams()
const = 0;
125 virtual qint64 pendingDatagramSize()
const = 0;
128 virtual qint64 readDatagram(
char *data, qint64 maxlen, QIpPacketHeader *header =
nullptr,
129 PacketHeaderOptions = WantNone) = 0;
130 virtual qint64 writeDatagram(
const char *data, qint64 len,
const QIpPacketHeader &header) = 0;
131 virtual qint64 bytesToWrite()
const = 0;
133 virtual int option(SocketOption option)
const = 0;
134 virtual bool setOption(SocketOption option,
int value) = 0;
136 virtual bool waitForRead(QDeadlineTimer deadline = QDeadlineTimer{DefaultTimeout},
137 bool *timedOut =
nullptr) = 0;
138 virtual bool waitForWrite(QDeadlineTimer deadline = QDeadlineTimer{DefaultTimeout},
139 bool *timedOut =
nullptr) = 0;
140 virtual bool waitForReadOrWrite(
bool *readyToRead,
bool *readyToWrite,
141 bool checkRead,
bool checkWrite,
142 QDeadlineTimer deadline = QDeadlineTimer{DefaultTimeout},
143 bool *timedOut =
nullptr) = 0;
145 QAbstractSocket::SocketError error()
const;
146 QString errorString()
const;
147 QAbstractSocket::SocketState state()
const;
148 QAbstractSocket::SocketType socketType()
const;
149 QAbstractSocket::NetworkLayerProtocol protocol()
const;
151 QHostAddress localAddress()
const;
152 quint16 localPort()
const;
153 QHostAddress peerAddress()
const;
154 quint16 peerPort()
const;
155 int inboundStreamCount()
const;
156 int outboundStreamCount()
const;
158 virtual bool isReadNotificationEnabled()
const = 0;
159 virtual void setReadNotificationEnabled(
bool enable) = 0;
160 virtual bool isWriteNotificationEnabled()
const = 0;
161 virtual void setWriteNotificationEnabled(
bool enable) = 0;
162 virtual bool isExceptionNotificationEnabled()
const = 0;
163 virtual void setExceptionNotificationEnabled(
bool enable) = 0;
166 void readNotification();
167 void writeNotification();
168 void closeNotification();
169 void exceptionNotification();
170 void connectionNotification();
171#ifndef QT_NO_NETWORKPROXY
172 void proxyAuthenticationRequired(
const QNetworkProxy &proxy, QAuthenticator *authenticator);
176 void setReceiver(QAbstractSocketEngineReceiver *receiver);
178 QAbstractSocketEngine(QAbstractSocketEnginePrivate &dd, QObject* parent =
nullptr);
180 void setError(QAbstractSocket::SocketError error,
const QString &errorString)
const;
181 void setState(QAbstractSocket::SocketState state);
182 void setSocketType(QAbstractSocket::SocketType socketType);
183 void setProtocol(QAbstractSocket::NetworkLayerProtocol protocol);
184 void setLocalAddress(
const QHostAddress &address);
185 void setLocalPort(quint16 port);
186 void setPeerAddress(
const QHostAddress &address);
187 void setPeerPort(quint16 port);
190 Q_DECLARE_PRIVATE(QAbstractSocketEngine)
191 Q_DISABLE_COPY_MOVE(QAbstractSocketEngine)