5#ifndef QNATIVESOCKETENGINE_P_H
6#define QNATIVESOCKETENGINE_P_H
19#include <QtNetwork/private/qtnetworkglobal_p.h>
20#include "QtNetwork/qhostaddress.h"
21#include "QtNetwork/qnetworkinterface.h"
22#include "private/qabstractsocketengine_p.h"
23#include "qplatformdefs.h"
26# include <netinet/in.h>
36# define QT_SOCKLEN_T int
37# define QT_SOCKOPTLEN_T int
42 template <
typename T>
void set(T *sa,
typename std::enable_if<(&T::sa_len,
true), QT_SOCKLEN_T>
::type len)
44 template <
typename T>
void set(T *sa,
typename std::enable_if<(&T::sin_len,
true), QT_SOCKLEN_T>
::type len)
45 { sa->sin_len =
len; }
46 template <
typename T>
void set(T *sin6,
typename std::enable_if<(&T::sin6_len,
true), QT_SOCKLEN_T>
::type len)
47 { sin6->sin6_len =
len; }
48 template <
typename T>
void set(T *, ...) {}
54 SetSALen::set(sin,
sizeof(*sin));
55 sin->sin_family = AF_INET;
56 sin->sin_port = htons(
port);
57 sin->sin_addr.s_addr = htonl(
addr.toIPv4Address());
64 SetSALen::set(sin6,
sizeof(*sin6));
66 sin6->sin6_port = htons(
port);
67 memcpy(sin6->sin6_addr.s6_addr,
addr.toIPv6Address().c,
sizeof(sin6->sin6_addr));
68#if QT_CONFIG(networkinterface)
72 sin6->sin6_scope_id =
addr.scopeId().toUInt();
79 switch (
addr.protocol()) {
91 sa->sa_family = AF_UNSPEC;
97#ifndef QT_NO_NETWORKINTERFACE
118 bool listen(
int backlog)
override;
120 void close()
override;
127#ifndef QT_NO_UDPSOCKET
128#ifndef QT_NO_NETWORKINTERFACE
142 PacketHeaderOptions = WantNone)
override;
147 qint64 receiveBufferSize()
const;
148 void setReceiveBufferSize(
qint64 bufferSize);
150 qint64 sendBufferSize()
const;
151 void setSendBufferSize(
qint64 bufferSize);
157 bool waitForRead(
int msecs = 30000,
bool *timedOut =
nullptr)
override;
158 bool waitForWrite(
int msecs = 30000,
bool *timedOut =
nullptr)
override;
160 bool checkRead,
bool checkWrite,
161 int msecs = 30000,
bool *timedOut =
nullptr)
override;
virtual bool leaveMulticastGroup(const QHostAddress &groupAddress, const QNetworkInterface &iface)=0
virtual bool setMulticastInterface(const QNetworkInterface &iface)=0
virtual bool joinMulticastGroup(const QHostAddress &groupAddress, const QNetworkInterface &iface)=0
virtual void setWriteNotificationEnabled(bool enable)=0
virtual bool bind(const QHostAddress &address, quint16 port)=0
virtual bool isValid() const =0
virtual bool isReadNotificationEnabled() const =0
virtual bool hasPendingDatagrams() const =0
virtual bool connectToHost(const QHostAddress &address, quint16 port)=0
virtual qintptr accept()=0
virtual qint64 readDatagram(char *data, qint64 maxlen, QIpPacketHeader *header=nullptr, PacketHeaderOptions=WantNone)=0
virtual qint64 read(char *data, qint64 maxlen)=0
virtual void setReadNotificationEnabled(bool enable)=0
virtual bool setOption(SocketOption option, int value)=0
virtual qint64 write(const char *data, qint64 len)=0
virtual qint64 pendingDatagramSize() const =0
virtual qintptr socketDescriptor() const =0
virtual bool connectToHostByName(const QString &name, quint16 port)=0
virtual qint64 bytesAvailable() const =0
virtual qint64 bytesToWrite() const =0
virtual void setExceptionNotificationEnabled(bool enable)=0
virtual bool isWriteNotificationEnabled() const =0
virtual bool waitForRead(int msecs=30000, bool *timedOut=nullptr)=0
virtual bool isExceptionNotificationEnabled() const =0
virtual bool waitForReadOrWrite(bool *readyToRead, bool *readyToWrite, bool checkRead, bool checkWrite, int msecs=30000, bool *timedOut=nullptr)=0
void connectionNotification()
virtual qint64 writeDatagram(const char *data, qint64 len, const QIpPacketHeader &header)=0
virtual QNetworkInterface multicastInterface() const =0
SocketState
This enum describes the different states in which a socket can be.
static constexpr auto IPv4Protocol
SocketType
This enum describes the transport layer protocol.
The QHostAddress class provides an IP address.
@ UnknownNetworkLayerProtocol
The QNativeSocketEngine class provides low level access to a socket.
The QNetworkInterface class provides a listing of the host's IP addresses and network interfaces.
static int interfaceIndexFromName(const QString &name)
\macro QT_RESTRICTED_CAST_FROM_ASCII
Combined button and popup list for selecting options.
QT_SOCKLEN_T setSockaddr(sockaddr_in *sin, const QHostAddress &addr, quint16 port=0)
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLuint GLuint64EXT address
#define Q_AUTOTEST_EXPORT
QFuture< QSet< QChar > > set
[10]
socketLayer waitForWrite()
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent