42 Q_MOC_INCLUDE(<QtNetwork/qauthenticator.h>)
45 static QAbstractSocketEngine *createSocketEngine(QAbstractSocket::SocketType socketType,
const QNetworkProxy &, QObject *parent);
46 static QAbstractSocketEngine *createSocketEngine(qintptr socketDescriptor, QObject *parent);
48 QAbstractSocketEngine(QObject *parent =
nullptr);
51 NonBlockingSocketOption,
52 BroadcastSocketOption,
53 ReceiveBufferSocketOption,
54 SendBufferSocketOption,
61 MulticastLoopbackOption,
63 ReceivePacketInformation,
65 MaxStreamsSocketOption,
69 KeepAliveIntervalOption,
73 enum PacketHeaderOption {
75 WantDatagramSender = 0x01,
76 WantDatagramDestination = 0x02,
77 WantDatagramHopLimit = 0x04,
78 WantStreamNumber = 0x08,
79 WantEndOfRecord = 0x10,
83 Q_DECLARE_FLAGS(PacketHeaderOptions, PacketHeaderOption)
85 virtual bool initialize(QAbstractSocket::SocketType type, QAbstractSocket::NetworkLayerProtocol protocol = QAbstractSocket::IPv4Protocol) = 0;
87 virtual bool initialize(qintptr socketDescriptor, QAbstractSocket::SocketState socketState = QAbstractSocket::ConnectedState) = 0;
89 virtual qintptr socketDescriptor()
const = 0;
91 virtual bool isValid()
const = 0;
93 virtual bool connectToHost(
const QHostAddress &address, quint16 port) = 0;
94 virtual bool connectToHostByName(
const QString &name, quint16 port) = 0;
95 virtual bool bind(
const QHostAddress &address, quint16 port) = 0;
96 virtual bool listen(
int backlog) = 0;
97 virtual qintptr accept() = 0;
98 virtual void close() = 0;
100 virtual qint64 bytesAvailable()
const = 0;
102 virtual qint64 read(
char *data, qint64 maxlen) = 0;
103 virtual qint64 write(
const char *data, qint64 len) = 0;
105#ifndef QT_NO_UDPSOCKET
106#ifndef QT_NO_NETWORKINTERFACE
107 virtual bool joinMulticastGroup(
const QHostAddress &groupAddress,
108 const QNetworkInterface &iface) = 0;
109 virtual bool leaveMulticastGroup(
const QHostAddress &groupAddress,
110 const QNetworkInterface &iface) = 0;
111 virtual QNetworkInterface multicastInterface()
const = 0;
112 virtual bool setMulticastInterface(
const QNetworkInterface &iface) = 0;
115 virtual bool hasPendingDatagrams()
const = 0;
116 virtual qint64 pendingDatagramSize()
const = 0;
119 virtual qint64 readDatagram(
char *data, qint64 maxlen, QIpPacketHeader *header =
nullptr,
120 PacketHeaderOptions = WantNone) = 0;
121 virtual qint64 writeDatagram(
const char *data, qint64 len,
const QIpPacketHeader &header) = 0;
122 virtual qint64 bytesToWrite()
const = 0;
124 virtual int option(SocketOption option)
const = 0;
125 virtual bool setOption(SocketOption option,
int value) = 0;
127 virtual bool waitForRead(QDeadlineTimer deadline = QDeadlineTimer{DefaultTimeout},
128 bool *timedOut =
nullptr) = 0;
129 virtual bool waitForWrite(QDeadlineTimer deadline = QDeadlineTimer{DefaultTimeout},
130 bool *timedOut =
nullptr) = 0;
131 virtual bool waitForReadOrWrite(
bool *readyToRead,
bool *readyToWrite,
132 bool checkRead,
bool checkWrite,
133 QDeadlineTimer deadline = QDeadlineTimer{DefaultTimeout},
134 bool *timedOut =
nullptr) = 0;
136 QAbstractSocket::SocketError error()
const;
137 QString errorString()
const;
138 QAbstractSocket::SocketState state()
const;
139 QAbstractSocket::SocketType socketType()
const;
140 QAbstractSocket::NetworkLayerProtocol protocol()
const;
142 QHostAddress localAddress()
const;
143 quint16 localPort()
const;
144 QHostAddress peerAddress()
const;
145 quint16 peerPort()
const;
146 int inboundStreamCount()
const;
147 int outboundStreamCount()
const;
149 virtual bool isReadNotificationEnabled()
const = 0;
150 virtual void setReadNotificationEnabled(
bool enable) = 0;
151 virtual bool isWriteNotificationEnabled()
const = 0;
152 virtual void setWriteNotificationEnabled(
bool enable) = 0;
153 virtual bool isExceptionNotificationEnabled()
const = 0;
154 virtual void setExceptionNotificationEnabled(
bool enable) = 0;
157 void readNotification();
158 void writeNotification();
159 void closeNotification();
160 void exceptionNotification();
161 void connectionNotification();
162#ifndef QT_NO_NETWORKPROXY
163 void proxyAuthenticationRequired(
const QNetworkProxy &proxy, QAuthenticator *authenticator);
167 void setReceiver(QAbstractSocketEngineReceiver *receiver);
169 QAbstractSocketEngine(QAbstractSocketEnginePrivate &dd, QObject* parent =
nullptr);
171 void setError(QAbstractSocket::SocketError error,
const QString &errorString)
const;
172 void setState(QAbstractSocket::SocketState state);
173 void setSocketType(QAbstractSocket::SocketType socketType);
174 void setProtocol(QAbstractSocket::NetworkLayerProtocol protocol);
175 void setLocalAddress(
const QHostAddress &address);
176 void setLocalPort(quint16 port);
177 void setPeerAddress(
const QHostAddress &address);
178 void setPeerPort(quint16 port);
181 Q_DECLARE_PRIVATE(QAbstractSocketEngine)
182 Q_DISABLE_COPY_MOVE(QAbstractSocketEngine)