Qt:Qt Network C ++类

提供使网络编程更容易和可移植的类

命名空间

QPasswordDigestor

包含可用于生成哈希或密钥的函数

QSsl

声明Qt Network中所有SSL类通用的枚举

QPasswordDigestor

功能:

  • QPasswordDigestor命名空间包含可用于生成哈希或键的函数
Header: #include <QPasswordDigestor>
qmake: QT += network

成员函数:

QByteArray deriveKeyPbkdf1(QCryptographicHash::Algorithm algorithm, const QByteArray &data, const QByteArray &salt, int iterations, quint64 dkLen)
QByteArray deriveKeyPbkdf2(QCryptographicHash::Algorithm algorithm, const QByteArray &data, const QByteArray &salt, int iterations, quint64 dkLen)

官方文档:

https://doc.qt.io/qt-5/qpassworddigestor.html

deriveKeyPbkdf1

功能:

  • 返回使用RFC 8018中定义的PBKDF1-算法计算的哈希。
  • 该函数获取数据,然后使用指定的哈希算法反复对其进行哈希处理以进行迭代。如果生成的哈希值比dkLen长,则在返回之前将其截断。
  • 此功能仅支持SHA-1和MD5!使用SHA-1时,最大输出大小为160位(20字节),使用MD5时,最大输出大小为128位(16字节)。为dkLen指定一个大于此值的值将导致警告,并返回一个空的QByteArray。要以编程方式检查此限制,可以使用QCryptographicHash :: hashLength。此外:salt必须始终为8个字节长!
  • 注意:提供此功能供旧版应用程序使用,建议所有新应用程序使用PBKDF2
  • 此功能在Qt 5.12中引入
  • 另请参见deriveKeyPbkdf2QCryptographicHashQCryptographicHash :: hashLength

原型:

QByteArray QPasswordDigestor::deriveKeyPbkdf1(QCryptographicHash::Algorithm algorithm, const QByteArray &data, const QByteArray &salt, int iterations, quint64 dkLen)

generateKeyPbkdf2

功能:

  • 使用RFC 8018中定义的PBKDF2-算法派生密钥。
  • 此函数获取数据salt,然后重复应用HMAC-X,其中X是algorithm。它在内部将中间结果连接到最终输出,直到至少计算了dkLen个字节为止,并且每次需要连接时都会执行HMAC-X迭代。它执行HMAC-X的总次数取决于迭代次数dkLen算法,可以计算为iterations * ceil(dkLen / QCryptographicHash::hashLength(algorithm))
  • 此功能在Qt 5.12中引入。
  • 另请参见deriveKeyPbkdf1QMessageAuthenticationCodeQCryptographicHash

原型:

QByteArray QPasswordDigestor::deriveKeyPbkdf2(QCryptographicHash::Algorithm algorithm, const QByteArray &data, const QByteArray &salt, int iterations, quint64 dkLen)

使用:

QSsl 

功能:

  • QSsl名称空间声明了Qt Network中所有SSL类通用的枚举
Header: #include <QSsl>
qmake: QT += network
Since: Qt 4.3

类型:

enum AlternativeNameEntryType { EmailEntry, DnsEntry, IpAddressEntry }
enum EncodingFormat { Pem, Der }
enum KeyAlgorithm { Rsa, Dsa, Ec, Dh, Opaque }
enum KeyType { PrivateKey, PublicKey }
enum SslOption { SslOptionDisableEmptyFragments, SslOptionDisableSessionTickets, SslOptionDisableCompression, SslOptionDisableServerNameIndication, SslOptionDisableLegacyRenegotiation, …, SslOptionDisableServerCipherPreference }
flags SslOptions
enum SslProtocol { SslV3, SslV2, TlsV1_0, TlsV1_0OrLater, TlsV1, …, SecureProtocols }

官方文档:

https://doc.qt.io/qt-5/qpassworddigestor.html

AlternativeNameEntryType 

功能:

Constant Value Description
QSsl::EmailEntry 0 电子邮件条目;该条目包含证书有效的电子邮件地址
QSsl::DnsEntry 1 DNS主机名条目;该条目包含证书对其有效的主机名条目。该条目可能包含通配符。
QSsl::IpAddressEntry 2 IP地址条目;该条目包含Qt 5.13中引入的证书有效的IP地址条目

原型:

enum QSsl::AlternativeNameEntryType

官方文档:

https://doc.qt.io/qt-5/qssl.html

EncodingFormat

功能:

  • 描述证书和密钥支持的编码格式。
Constant Value Description
QSsl::Pem 0 PEM 格式.
QSsl::Der 1 DER 格式..

原型:

enum QSsl::EncodingFormat

官方文档:

https://doc.qt.io/qt-5/qssl.html#EncodingFormat-enum

KeyAlgorithm

功能:

  • 描述QSslKey支持的不同密钥算法。
  • 不透明的密钥功能允许应用程序添加对Qt当前不提供的功能(例如PKCS#11)的支持。
Constant Value Description
QSsl::Rsa 1 RSA算法。
QSsl::Dsa 2 DSA算法。
QSsl::Ec 3 椭圆曲线算法。
QSsl::Dh 4 Diffie-Hellman算法。
QSsl::Opaque 0 QSslKey应该将其视为“黑匣子”的钥匙

原型:

enum QSsl::KeyAlgorithm

官方文档:

KeyType

功能:

  • 描述QSslKey支持的两种键。
Constant Value Description
QSsl::PrivateKey 0 私钥。
QSsl::PublicKey 1 公钥

原型:

enum QSsl::KeyType

官方文档:

SslOption、SslOptions

功能:

  • 描述可用于控制SSL行为详细信息的选项。这些选项通常用于关闭功能,以解决有问题的服务器。
  • 默认情况下,SslOptionDisableEmptyFragments处于打开状态,因为这会导致大量服务器出现问题。SslOptionDisableLegacyRenegotiation也已打开,因为它带来了安全风险。启用S​​slOptionDisableCompression可以防止CRIME公开的攻击。SslOptionDisableSessionPersistence已打开以优化内存使用。其他选项已关闭。
  • 注意:以上选项的可用性取决于所使用的SSL后端的版本。
  • SslOptions类型是QFlags <SslOption>的typedef 。它存储SslOption值的OR组合。
Constant Value Description
QSsl::SslOptionDisableEmptyFragments 0x01 使用分组密码时,禁止将空片段插入数据中。启用后,这可以防止某些攻击(例如BEAST攻击),但是与某些服务器不兼容。
QSsl::SslOptionDisableSessionTickets 0x02 禁用SSL会话票证扩展名。这可能会导致连接设置变慢,但是某些服务器与扩展名不兼容。
QSsl::SslOptionDisableCompression 0x04 禁用SSL压缩扩展。启用后,这将允许压缩通过SSL传递的数据,但是某些服务器与此扩展名不兼容。
QSsl::SslOptionDisableServerNameIndication 0x08 禁用SSL服务器名称指示扩展名。启用后,它会告知服务器正在访问的虚拟主机,从而使其可以使用正确的证书进行响应。
QSsl::SslOptionDisableLegacyRenegotiation 0x10 禁用用于重新协商连接参数的较旧的不安全机制。启用后,此选项可以允许旧服务器连接,但是它带来了攻击者可能将纯文本注入SSL会话的可能性。
QSsl::SslOptionDisableSessionSharing 0x20 通过会话ID握手属性禁用SSL会话共享
QSsl::SslOptionDisableSessionPersistence 0x40 禁用QSslConfiguration :: sessionTicket()返回的以ASN.1格式存储SSL会话。启用此功能会为每个使用的会话票证增加大约1K的内存开销。
QSsl::SslOptionDisableServerCipherPreference 0x80 禁用选择基于服务器首选项而非客户端发送的顺序密码而选择的密码。此选项仅与服务器套接字相关,并且仅由OpenSSL后端使用。

原型:

enum QSsl::SslOption
flags QSsl::SslOptions

官方文档:

SslProtocol

原型:

enum QSsl::SslProtocol

功能:

  • 描述密码的协议。
Constant Value Description
QSsl::SslV3 0 SSLv3; QSslSocket不支持。
QSsl::SslV2 1 SSLv2;QSslSocket不支持。
QSsl::TlsV1_0 2 TLSv1.0
QSsl::TlsV1_0OrLater 8 TLSv1.0和更高版本。由于平台限制,在使用WinRT后端时,此选项不可用。
QSsl::TlsV1 TlsV1_0 已过时,与TlsV1_0相同
QSsl::TlsV1_1 3 TLSv1.1。使用WinRT后端时,此选项还将启用TLSv1.0。
QSsl::TlsV1_1OrLater 9 TLSv1.1和更高版本。由于平台限制,在使用WinRT后端时,此选项不可用。
QSsl::TlsV1_2 4 TLSv1.2。使用WinRT后端时,此选项还将启用TLSv1.0和TLSv1.1。
QSsl::TlsV1_2OrLater 10 TLSv1.2和更高版本。由于平台限制,在使用WinRT后端时,此选项不可用。
QSsl::DtlsV1_0 11 DTLSv1.0
QSsl::DtlsV1_0OrLater 12 DTLSv1.0和更高版本。
QSsl::DtlsV1_2 13 DTLSv1.2
QSsl::DtlsV1_2OrLater 14 DTLSv1.2和更高版本。
QSsl::TlsV1_3 15 TLSv1.3。(从Qt 5.12开始)
QSsl::TlsV1_3OrLater 16 TLSv1.3和更高版本。(从Qt 5.12开始)
QSsl::UnknownProtocol -1 无法确定密码协议。
QSsl::AnyProtocol 5 任何受支持的协议。该值仅由QSslSocket使用。
QSsl::TlsV1SslV3 6 与TlsV1_0相同。该枚举数已弃用,请改用TlsV1_0。
QSsl::SecureProtocols AnyProtocol + 2 默认选项,使用已知是安全的协议

官方文档:

QAbstractNetworkCache

缓存实现的接口

QAbstractSocket

所有套接字类型共有的基本功能

QAuthenticator

认证对象

QDnsDomainNameRecord

存储有关域名记录的信息

QDnsHostAddressRecord

存储有关主机地址记录的信息

QHostAddress

IP address

   

QAbstractNetworkCache

功能:

  • QAbstractNetworkCache类提供用于缓存实现的接口
  • QAbstractNetworkCache是QNetworkAccessManager使用的每个标准缓存的基类。QAbstractNetworkCache是​​一个抽象类,不能实例化
  • 另请参见QNetworkDiskCache
Header: #include <QAbstractNetworkCache>
qmake: QT + =网络
Since: Qt 4.5
继承: QObject
继承者:

QNetworkDiskCache

Public Functions:

virtual ~QAbstractNetworkCache()
virtual qint64 cacheSize() const = 0
virtual QIODevice * data(const QUrl &url) = 0
virtual void insert(QIODevice *device) = 0
virtual QNetworkCacheMetaData metaData(const QUrl &url) = 0
virtual QIODevice * prepare(const QNetworkCacheMetaData &metaData) = 0
virtual bool remove(const QUrl &url) = 0
virtual void updateMetaData(const QNetworkCacheMetaData &metaData) = 0

Public Slots:

virtual void clear() = 0

Protected Functions:

  QAbstractNetworkCache(QObject *parent = nullptr)

官方文档:

https://doc.qt.io/qt-5/qabstractnetworkcache.html

QAbstractNetworkCache

原型:

[protected]
     QAbstractNetworkCache::QAbstractNetworkCache(QObject *parent = nullptr)

功能:

  • 使用给定的parent构造一个抽象的网络缓存。

clear

原型:

[pure virtual slot]
     void QAbstractNetworkCache::clear()

功能:

  • 从缓存中删除所有项目。除非清除失败,否则在调用清除后,缓存cacheSize()应该返回0。
  • 在基类中,这是一个纯虚函数。
  • 另请参见cacheSize()和remove()。

~QAbstractNetworkCache

原型:

[virtual]
    QAbstractNetworkCache::~QAbstractNetworkCache()

功能:

  • 销毁缓存。
  • 尚未插入的所有操作都将被丢弃。
  • 另请参见insert()

cacheSize

原型:

[pure virtual]
     qint64 QAbstractNetworkCache::cacheSize() const

功能:

  • 返回缓存占用的当前大小。根据缓存的实现,这可能是磁盘或内存的大小。
  • 在基类中,这是一个纯虚函数。
  • 另请参见clear()。

data

原型:

[pure virtual]
     QIODevice *QAbstractNetworkCache::data(const QUrl &url)

功能:

  • 返回与url关联的数据。
  • 这取决于应用程序在使用QIODevice时请求数据删除它。
  • 如果没有url的缓存,则url无效,或者nullptr返回内部缓存错误。
  • 在基类中,这是一个纯虚函数。

  • 另请参见metaData()和prepare()

insert

原型:

[pure virtual]
     void QAbstractNetworkCache::insert(QIODevice *device)

功能:

  • 将数据插入设备并将准备好的元数据插入缓存。调用此函数后,应使用data()和metaData()检索数据和元数据。
  • 要取消预先插入的调用,请在元数据的url上调用 remove() 
  • 在基类中,这是一个纯虚函数
  • 另请参见prepare()和remove()。

metaData

原型:

[pure virtual]
    QNetworkCacheMetaData QAbstractNetworkCache::metaData(const QUrl &url)

功能:

  • 返回URL的元数据URL
  • 如果url有效,并且缓存包含url的数据,则返回有效的QNetworkCacheMetaData
  • 在基类中,这是一个纯虚函数
  • 另请参见updateMetaData()和data()

prepare

原型:

[pure virtual]
    QIODevice *QAbstractNetworkCache::prepare(const QNetworkCacheMetaData &metaData)

功能:

  • 返回应使用缓存项metaData的数据填充的设备。当所有的数据都写完之后,应该调用insert()。如果metaData无效或元数据中的url无效,则返回nullptr
  • 要取消预先插入的调用,请在元数据的url上调用 remove() 
  • 在基类中,这是一个纯虚函数
  • 另请参见remove(),updateMetaData()和insert()

remove

原型:

[pure virtual]
    bool QAbstractNetworkCache::remove(const QUrl &url)

功能:

  • 删除url的缓存条目,如果成功则返回true,否则返回false。

  • 在基类中,这是一个纯虚函数。

  • 另请参见clear()和prepare()

updateMetaData

原型:

[pure virtual]
    void QAbstractNetworkCache :: updateMetaData(const QNetworkCacheMetaData&metaData)

功能:

  • metaData的URL的缓存元数据更新为metaData
  • 如果缓存不包含该URL的缓存项,则不执行任何操作
  • 在基类中,这是一个纯虚函数。

  • 另请参见metaData()和prepare()。

QAbstractSocket

功能:

  • QAbstractSocket类提供所有套接字类型共有的基本功能。
  • 注意:此类中的所有函数都是reentent
head: #include <QAbstractSocket>
qmake: QT + =网络
继承: QIODevice
继承者:

QTcpSocketQUdpSocket

解释:

QAbstractSocket是QTcpSocketQUdpSocket的基类,并且包含这两个类的所有常用功能。如果需要套接字,则有两个选择:

TCP(传输控制协议)是一种可靠的,面向流,面向连接的传输协议。UDP(用户数据报协议)是一种不可靠的,面向数据报的无连接协议。实际上,这意味着TCP更适合于连续数据传输,而当可靠性不重要时,可以使用更轻量的UDP。

QAbstractSocket的API统一了这两种协议之间的大部分差异。例如,尽管UDP是无连接的,但connectToHost()为UDP套接字建立了虚拟连接,使您可以以几乎相同的方式使用QAbstractSocket,而与基础协议无关。在内部,QAbstractSocket会记住传递给connectToHost()的地址和端口,并且read()和write()之类的函数会使用这些值。

QAbstractSocket随时都有一个状态(由 state()返回)。初始状态为UnconnectedState。调用connectToHost()之后,套接字首先进入HostLookupState。如果找到了主机,则QAbstractSocket进入ConnectingState并发出hostFound()信号。建立连接后,它将进入ConnectedState并发出connected()。如果在任何阶段发生错误,发出errorOccurred()信号。每当状态更改时,都会发出stateChanged()。为了方便起见,isValid()返回true如果套接字已准备好进行读写,但是请注意,在发生读写之前,套接字的状态必须为ConnectedState

每当有新的数据块到达时,就会发出readyRead()信号。然后bytesAvailable()返回可用于读取的字节数。通常,您会将readyRead()信号连接到一个插槽,并读取那里的所有可用数据。如果您没有一次读取所有数据,那么以后剩余的数据仍然可用,并且任何新的传入数据都将追加到QAbstractSocket的内部读取缓冲区。要限制读缓冲区的大小,可以调用setReadBufferSize()。

要关闭套接字,请调用DisconnectFromHost(),QAbstractSocket进入QAbstractSocket :: ClosingState。将所有未决数据写入套接字后,QAbstractSocket实际上关闭套接字,进入QAbstractSocket :: UnconnectedState,并发出 disconnected()。如果要立即中止连接,并丢弃所有待处理的数据,请调用abort()。如果远程主机关闭连接,则QAbstractSocket将发出errorOccurredQAbstractSocket :: RemoteHostClosedError),在此期间套接字状态仍为ConnectedState,然后将发出disconnected()信号。

通过调用peerPort()和peerAddress()来获取已连接对等方的端口和地址,peerName()返回传递给connectToHost()的对等方的主机名。localPort()和localAddress()返回本地套接字的端口和地址。

QAbstractSocket提供了一组函数,这些函数可以挂起调用线程,直到发出某些信号为止。这些功能可用于实现阻塞套接字:

我们举一个例子:

   int numRead = 0, numReadTotal = 0;
    char buffer[50];

    forever {
        numRead  = socket.read(buffer, 50);

        // do whatever with array

        numReadTotal += numRead;
        if (numRead == 0 && !socket.waitForReadyRead())
            break;
    }

如果waitForReadyRead()返回false,则连接已关闭或发生了错误。

使用阻塞套接字编程与使用非阻塞套接字编程完全不同。阻塞型套接字不需要事件循环,通常会导致更简单的代码。然而,在GUI应用程序中,阻塞套接字应该只在非GUI线程中使用,以避免冻结用户界面。有关这两种方法的概述,请参见fortuneclientblockingfortuneclient示例。

注意:我们不建议将阻塞功能与信号一起使用。应该使用两种可能性之一。

QAbstractSocket可以与QTextStreamQDataStream的流运算符(operator <<()和operator >>())一起使用。但是,有一个问题需要注意:在尝试使用operator >>()读取数据之前,必须确保有足够的数据可用。

另请参见QNetworkAccessManagerQTcpServer

官方文档:

https://doc.qt.io/qt-5/qabstractsocket.html

Public Types:

enum BindFlag { ShareAddress, DontShareAddress, ReuseAddressHint, DefaultForPlatform }
flags BindMode
enum NetworkLayerProtocol { IPv4Protocol, IPv6Protocol, AnyIPProtocol, UnknownNetworkLayerProtocol }
enum PauseMode { PauseNever, PauseOnSslErrors }
flags PauseModes
enum SocketError { ConnectionRefusedError, RemoteHostClosedError, HostNotFoundError, SocketAccessError, SocketResourceError, …, UnknownSocketError }
enum SocketOption { LowDelayOption, KeepAliveOption, MulticastTtlOption, MulticastLoopbackOption, TypeOfServiceOption, …, PathMtuSocketOption }
enum SocketState { UnconnectedState, HostLookupState, ConnectingState, ConnectedState, BoundState, …, ListeningState }
enum SocketType { TcpSocket, UdpSocket, SctpSocket, UnknownSocketType }

Public Functions:

  QAbstractSocket(QAbstractSocket::SocketType socketType, QObject *parent)
virtual ~QAbstractSocket()
void abort()
bool bind(const QHostAddress &address, quint16 port = 0, QAbstractSocket::BindMode mode = DefaultForPlatform)
bool bind(quint16 port = 0, QAbstractSocket::BindMode mode = DefaultForPlatform)
virtual void connectToHost(const QString &hostName, quint16 port, QIODevice::OpenMode openMode = ReadWrite, QAbstractSocket::NetworkLayerProtocol protocol = AnyIPProtocol)
virtual void connectToHost(const QHostAddress &address, quint16 port, QIODevice::OpenMode openMode = ReadWrite)
virtual void disconnectFromHost()
QAbstractSocket::SocketError error() const
bool flush()
bool isValid() const
QHostAddress localAddress() const
quint16 localPort() const
QAbstractSocket::PauseModes pauseMode() const
QHostAddress peerAddress() const
QString peerName() const
quint16 peerPort() const
QString protocolTag() const
QNetworkProxy proxy() const
qint64 readBufferSize() const
virtual void resume()
void setPauseMode(QAbstractSocket::PauseModes pauseMode)
void setProtocolTag(const QString &tag)
void setProxy(const QNetworkProxy &networkProxy)
virtual void setReadBufferSize(qint64 size)
virtual bool setSocketDescriptor(qintptr socketDescriptor, QAbstractSocket::SocketState socketState = ConnectedState, QIODevice::OpenMode openMode = ReadWrite)
virtual void setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value)
virtual qintptr socketDescriptor() const
virtual QVariant socketOption(QAbstractSocket::SocketOption option)
QAbstractSocket::SocketType socketType() const
QAbstractSocket::SocketState state() const
virtual bool waitForConnected(int msecs = 30000)
virtual bool waitForDisconnected(int msecs = 30000)

重新实现的公共Functions:

virtual bool atEnd() const override
virtual qint64 bytesAvailable() const override
virtual qint64 bytesToWrite() const override
virtual bool canReadLine() const override
virtual void close() override
virtual bool isSequential() const override
virtual bool waitForBytesWritten(int msecs = 30000) override
virtual bool waitForReadyRead(int msecs = 30000) override

Signals:

void connected()
void disconnected()
void errorOccurred(QAbstractSocket::SocketError socketError)
void hostFound()
void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator)
void stateChanged(QAbstractSocket::SocketState socketState)

Protected Functions:

void setLocalAddress(const QHostAddress &address)
void setLocalPort(quint16 port)
void setPeerAddress(const QHostAddress &address)
void setPeerName(const QString &name)
void setPeerPort(quint16 port)
void setSocketError(QAbstractSocket::SocketError socketError)
void setSocketState(QAbstractSocket::SocketState state)

Reimplemented Protected Functions

virtual qint64 readData(char *data, qint64 maxSize) override
virtual qint64 readLineData(char *data, qint64 maxlen) override
virtual qint64 writeData(const char *data, qint64 size) override

BindFlag、BindMode

原型:

enum QAbstractSocket::BindFlag
flags QAbstractSocket::BindMode

功能:

  • 该枚举描述了可以传递的用于修改QAbstractSocket :: bind()行为的不同标志。
  • 这个枚举是在Qt 5.0中引入或修改的。
  • BindMode类型是QFlags <BindFlag>的typedef 。它存储BindFlag值的OR组合。
Constant Value

Description

QAbstractSocket::ShareAddress 0x1 允许其他服务绑定到相同的地址和端口。当多个进程通过侦听相同的地址和端口来共享单个服务的负载时,这很有用(例如,具有多个预分支侦听器的Web服务器可以大大缩短响应时间)。但是,由于允许任何服务重新绑定,因此此选项受某些安全考虑。请注意,通过将此选项与ReuseAddressHint结合使用,您还将允许您的服务重新绑定现有的共享地址。在Unix上,这等效于SO_REUSEADDR套接字选项。在Windows上,这是默认行为,因此将忽略此选项。
QAbstractSocket::DontShareAddress 0x2 专门绑定地址和端口,以便不允许其他服务重新绑定。通过将此选项传递给QAbstractSocket :: bind(),可以确保成功时,您的服务是唯一侦听地址和端口的服务。即使服务通过ReuseAddressHint,也不允许重新绑定服务。此选项比ShareAddress提供更高的安全性,但是在某些操作系统上,它要求您以管理员权限运行服务器。在Unix和macOS上,不共享是绑定地址和端口的默认行为,因此该选项将被忽略。在Windows上,此选项使用SO_EXCLUSIVEADDRUSE套接字选项。
QAbstractSocket::ReuseAddressHint 0x4 QAbstractSocket提示,即使地址和端口已被另一个套接字绑定,它也应尝试重新绑定服务。在Windows和Unix上,这等效于SO_REUSEADDR套接字选项。
QAbstractSocket::DefaultForPlatform 0x0 当前平台的默认选项。在Unix和macOS上,这等效于(DontShareAddress + ReuseAddressHint),在Windows上,它等效于ShareAddress。

NetworkLayerProtocol

原型:

enum QAbstractSocket::NetworkLayerProtocol

功能:

Constant Value

Description

QAbstractSocket::IPv4Protocol 0 IPv4
QAbstractSocket::IPv6Protocol 1 IPv6
QAbstractSocket::AnyIPProtocol 2 IPv4或IPv6
QAbstractSocket::UnknownNetworkLayerProtocol -1 除了IPv4和IPv6

PauseMode、PauseModes

原型:

enum QAbstractSocket::PauseMode
flags QAbstractSocket::PauseModes

功能:

  • 此enum描述套接字在继续数据传输时应该保留的行为。目前唯一支持的通知是QSslSocket::sslErrors()。
  • 这个枚举是在Qt 5.0中引入或修改的。
  • PauseModes类型是QFlags <PauseMode>的typedef 。它存储PauseMode值的OR组合。
Constant Value

Description

QAbstractSocket::PauseNever 0x0 不要暂停套接字上的数据传输。这是默认设置,与Qt 4的行为匹配。
QAbstractSocket::PauseOnSslErrors 0x1 收到SSL错误通知后,暂停套接字上的数据传输。IE QSslSocket :: sslErrors()

SocketError

原型:

enum QAbstractSocket::SocketError

功能:

Constant Value

Description

QAbstractSocket::ConnectionRefusedError 0 该连接被对等方拒绝(或超时)
QAbstractSocket::RemoteHostClosedError 1 远程主机关闭了连接。请注意,客户端套接字(即此套接字)将在发送远程关闭通知后关闭。
QAbstractSocket::HostNotFoundError 2 找不到主机地址。
QAbstractSocket::SocketAccessError 3 套接字操作失败,因为该应用程序缺少必需的特权。
QAbstractSocket::SocketResourceError 4 本地系统资源不足(例如,套接字过多)
QAbstractSocket::SocketTimeoutError 5 套接字操作超时。
QAbstractSocket::DatagramTooLargeError 6 数据报大于操作系统的限制(可以低至8192字节)。
QAbstractSocket::NetworkError 7 网络发生错误(例如,网络电缆意外插入)
QAbstractSocket::AddressInUseError 8 指定给QAbstractSocket :: bind()的地址已在使用中,并被设置为独占。
QAbstractSocket::SocketAddressNotAvailableError 9 QAbstractSocket :: bind()指定的地址不属于主机。
QAbstractSocket::UnsupportedSocketOperationError 10 本地操作系统不支持请求的套接字操作(例如,缺少IPv6支持)。
QAbstractSocket::ProxyAuthenticationRequiredError 12 套接字正在使用代理,并且代理需要身份验证
QAbstractSocket::SslHandshakeFailedError 13 SSL / TLS握手失败,因此连接被关闭(仅在QSslSocket中使用
QAbstractSocket::UnfinishedSocketOperationError 11 仅由QAbstractSocketEngine使用,上一次尝试的操作尚未完成(仍在后台进行)。
QAbstractSocket::ProxyConnectionRefusedError 14 无法连接到代理服务器,因为与该服务器的连接被拒绝
QAbstractSocket::ProxyConnectionClosedError 15 与代理服务器的连接意外关闭(在建立与最终对等方的连接之前)
QAbstractSocket::ProxyConnectionTimeoutError 16 与代理服务器的连接超时或代理服务器在身份验证阶段停止响应。
QAbstractSocket::ProxyNotFoundError 17 找不到用setProxy()(或应用程序代理)设置的代理地址。
QAbstractSocket::ProxyProtocolError 18 与代理服务器的连接协商失败,因为无法理解来自代理服务器的响应。
QAbstractSocket::OperationError 19 套接字处于不允许状态时尝试执行操作。
QAbstractSocket::SslInternalError 20 使用的SSL库报告内部错误。这可能是由于库安装错误或配置错误造成的。
QAbstractSocket::SslInvalidUserDataError 21 提供了无效的数据(证书,密钥,密码等),其使用导致SSL库错误。
QAbstractSocket::TemporaryError 22 发生临时错误(例如,操作将阻塞并且套接字未阻塞)。
QAbstractSocket::UnknownSocketError -1 发生无法识别的错误。

SocketOption

原型:

enum QAbstractSocket::SocketOption

功能:

Constant Value

Description

QAbstractSocket::LowDelayOption 0 尝试优化套接字以降低延迟。对于QTcpSocket,这将设置TCP_NODELAY选项并禁用Nagle的算法。将此设置为1启用。
QAbstractSocket::KeepAliveOption 1 将此设置为1以启用SO_KEEPALIVE套接字选项
QAbstractSocket::MulticastTtlOption 2 将此设置为整数值可设置IP_MULTICAST_TTL(对于多播数据报为TTL)套接字选项。
QAbstractSocket::MulticastLoopbackOption 3 将此设置为1以启用IP_MULTICAST_LOOP(多播环回)套接字选项。
QAbstractSocket::TypeOfServiceOption 4 Windows不支持此选项。这映射到IP_TOS套接字选项。有关可能的值,请参见下表。
QAbstractSocket::SendBufferSizeSocketOption 5 在操作系统级别设置套接字发送缓冲区的大小(以字节为单位)。这映射到SO_SNDBUF套接字选项。该选项不会影响QIODeviceQAbstractSocket缓冲区。这个枚举值已在Qt 5.3中引入。
QAbstractSocket::ReceiveBufferSizeSocketOption 6 在OS级别设置套接字接收缓冲区的大小(以字节为单位)。这映射到SO_RCVBUF套接字选项。此选项不会影响QIODeviceQAbstractSocket缓冲区(请参见setReadBufferSize())。这个枚举值已在Qt 5.3中引入。
QAbstractSocket::PathMtuSocketOption 7 检索IP堆栈当前已知的路径最大传输单位(PMTU)值(如果有)。一些IP堆栈还允许设置MTU进行传输。这个枚举值是在Qt 5.11中引入的。

TypeOfServiceOption的可能值为:

SocketState

原型:

enum QAbstractSocket::SocketState

功能:

Constant Value

Description

QAbstractSocket::UnconnectedState 0 套接字未连接。
QAbstractSocket::HostLookupState 1 套接字正在执行主机名查找。
QAbstractSocket::ConnectingState 2 套接字已开始建立连接。
QAbstractSocket::ConnectedState 3 建立连接。
QAbstractSocket::BoundState 4 套接字绑定到一个地址和端口。
QAbstractSocket::ClosingState 6 套接字即将关闭(数据可能仍在等待写入)。
QAbstractSocket::ListeningState 5 仅限内部使用。

-

SocketType

原型:

enum QAbstractSocket::SocketType

功能:

Constant Value

Description

QAbstractSocket::TcpSocket 0 TCP协议
QAbstractSocket::UdpSocket 1 UDP协议
QAbstractSocket::SctpSocket 2 SCTP
QAbstractSocket::UnknownSocketType -1 除了TCP,UDP和SCTP

QAbstractSocket

原型:

QAbstractSocket::QAbstractSocket(QAbstractSocket::SocketType socketType, QObject *parent)

功能:

connected

原型:

[signal]
    void QAbstractSocket::connected()

功能:

  • 调用connectToHost()并成功建立连接后,将发出此信号。
  • 注意:在某些操作系统上,connected()信号可能直接从connectToHost()调用发出,以连接到本地主机。
  • 另请参见connectToHost()和 disconnected()

disconnected

原型:

[signal]
   void QAbstractSocket::disconnected()

功能:

errorOccurred

原型:

[signal]
   void QAbstractSocket::errorOccurred(QAbstractSocket::SocketError socketError)

功能:

hostFound

原型:

[signal]
     void QAbstractSocket::hostFound()

功能:

  • 调用connectToHost()并且主机查找成功后,将发出此信号。
  • 注意:自Qt 4.6.3起,由于可能已缓存DNS结果,因此QAbstractSocket可能会直接从connectToHost()调用发出hostFound()
  • 另请参见connected()。

proxyAuthenticationRequired

原型:

[signal]
     void QAbstractSocket::proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator)

功能:

  • 当使用需要身份验证的代理时,可以发出此信号。然后可以用所需的详细信息填充authenticator对象,以允许身份验证并继续连接。
  • 注意:不可能使用QueuedConnection来连接这个信号,因为当信号返回时,如果验证器没有填写新信息,连接将失败。
  • 这个函数是在Qt 4.3中引入的
  • See also QAuthenticator and QNetworkProxy.

stateChanged

原型:

[signal]
    void QAbstractSocket::stateChanged(QAbstractSocket::SocketState socketState)

功能:

〜QAbstractSocket()

原型:

[virtual]
      QAbstractSocket::~QAbstractSocket()

功能:

  • 销毁socket

abort

原型:

void QAbstractSocket::abort()

功能:

  • 中止当前连接并重置套接字。与disconnectFromHost()不同,此函数立即关闭套接字,并丢弃写缓冲区中的所有未决数据。

  • 另请参见disconnectFromHost()和close()。

atEnd

原型:

[override virtual]
       bool QAbstractSocket::atEnd() const

功能:

  • 重构 QIODevice:: atEnd() 。
  • 如果当前没有更多的数据可供读取,则返回true;否则返回false。
  • See also bytesAvailable() and readyRead().
  • 这个函数最常用于在循环中从套接字读取数据。例如:
 // This slot is connected to QAbstractSocket::readyRead()
 void SocketClass::readyReadSlot()
 {
     while (!socket.atEnd()) {
         QByteArray data = socket.read(100);
         ....
     }
 }

bind

原型:

bool QAbstractSocket::bind(const QHostAddress &address, quint16 port = 0, QAbstractSocket::BindMode mode = DefaultForPlatform)

功能:

  • 使用BindMode模式绑定到端口port上的地址
  • 对于UDP套接字,在绑定后,只要UDP数据报到达指定的地址和端口,就会发出信号QUdpSocket :: readyRead()。因此,此功能对于编写UDP服务器很有用。
  • 对于TCP套接字,此功能可用于指定将哪个接口用于传出连接,这在多个网络接口的情况下很有用。
  • 默认情况下,使用DefaultForPlatform BindMode绑定套接字。如果未指定端口,则选择一个随机端口。
  • 成功后,函数返回true,并且套接字进入BoundState;否则返回false
  • 此功能是在Qt 5.0中引入的

原型:

bool QAbstractSocket::bind(quint16 port = 0, QAbstractSocket::BindMode mode = DefaultForPlatform)

功能:

  • 这是一个重载函数。
  • 默认情况下,使用DefaultForPlatform BindMode绑定套接字。如果未指定端口,则选择一个随机端口。
  • 此功能是在Qt 5.0中引入的

bytesAvailable

原型:

[override virtual]
      qint64 QAbstractSocket::bytesAvailable() const

功能:

bytesToWrite

原型:

[override virtual]
     qint64 QAbstractSocket::bytesToWrite() const

功能:

canReadLine

原型:

[override virtual]bool QAbstractSocket::canReadLine() const

功能:

  • 重构:QIODevice:: canReadLine() const
  • 是否可以从套接字读取一行数据
  • 另请参见readLine()。

close

原型:

[override virtual]
         void QAbstractSocket::close()

功能:

connectToHost

原型:

[virtual]
   void QAbstractSocket::connectToHost(const QString &hostName, quint16 port, QIODevice::OpenMode openMode = ReadWrite, QAbstractSocket::NetworkLayerProtocol protocol = AnyIPProtocol)


[virtual]
   void QAbstractSocket::connectToHost(const QHostAddress &address, quint16 port, QIODevice::OpenMode openMode = ReadWrite)

功能:

  • 尝试连接到给定端口上的主机名。协议参数可以用来指定使用哪个网络协议(例如。IPv4和IPv6)。
  • 套接字以给定的openMode打开,首先进入HostLookupState,然后执行hostName的主机名查找。如果查找成功,则发出hostFound(),并且 QAbstractSocket进入ConnectingState。然后,它尝试连接到查找返回的一个或多个地址。最后,如果建立了连接,则QAbstractSocket将进入ConnectedState并发出connected()。
  • 在任何时候,套接字都可以发出errorOccurred()来表示发生了错误。
  • hostName可以是字符串形式的IP地址(例如“ 43.195.83.32”),也可以是主机名(例如“ example.com”)。QAbstractSocket将仅在需要时进行查找。端口按本机字节顺序。
  • 另请参见state(),peerName(),peerAddress(),peerPort()和waitForConnected()。

disconnectFromHost

原型:

[virtual]
      void QAbstractSocket::disconnectFromHost()

功能:

error

原型:

QAbstractSocket::SocketError QAbstractSocket::error() const

功能:

  • 返回上一次发生的错误的类型。
  • 另请参见state()和errorString()。

flush

原型:

bool QAbstractSocket::flush()

功能:

  • 这个函数尽可能多地从内部写入缓冲区写入底层网络套接字,而不会产生阻塞。如果写入了任何数据,这个函数返回true;否则返回false。
  • 如果需要QAbstractSocket立即开始发送缓冲数据,请调用此函数。成功写入的字节数取决于操作系统。在大多数情况下,您不需要调用这个函数,因为一旦控件返回到事件循环,QAbstractSocket将自动开始发送数据。如果没有事件循环,则调用waitForBytesWritten()。
  • 另请参见write()和waitForBytesWritten()

isSequential

原型:

[override virtual]
        bool QAbstractSocket::isSequential() const

功能:

isValid

原型:

bool QAbstractSocket::isValid() const

功能:

  • 如果套接字有效并且可以使用,则返回true;否则返回false。
  • 注意:在进行读写之前,套接字的状态必须为ConnectedState
  • 另请参见state()

localAddress

原型:

QHostAddress QAbstractSocket::localAddress() const

功能:

localPort

原型:

quint16 QAbstractSocket::localPort() const

功能:

  • 返回本地套接字的主机端口号(以本机字节顺序)(如果有);否则返回0。
  • 另请参见localAddress(),peerPort()和setLocalPort()。

PauseModes 

原型:

QAbstractSocket :: PauseModes QAbstractSocket :: pauseMode()const

功能:

  • 返回此套接字的暂停模式。
  • 此功能是在Qt 5.0中引入的。
  • 另请参见setPauseMode()和resume()。

peerAddress

原型:

QHostAddress QAbstractSocket::peerAddress() const

功能:

peerName

原型:

QString QAbstractSocket::peerName() const

功能:

peerPort

原型:

quint16 QAbstractSocket::peerPort() const

功能:

protocolTag

原型:

QString QAbstractSocket::protocolTag() const

功能:

  • 返回此套接字的协议标签。如果设置了协议标签,则在内部创建协议标签时将其传递给QNetworkProxyQuery,以指示要使用的协议标签。
  • 此功能在Qt 5.13中引入。
  • 另请参见setProtocolTag()和QNetworkProxyQuery

proxy

原型:

QNetworkProxy QAbstractSocket::proxy() const

功能:

  • 返回此套接字的网络代理。默认情况下使用 QNetworkProxy::DefaultProxy,这意味着该套接字将查询应用程序的默认代理设置。
  • 这个函数是在Qt 4.1中引入的。

readBufferSize

原型:

qint64 QAbstractSocket::readBufferSize() const

功能:

  • 返回内部读取缓冲区的大小。这限制了客户端在调用read()或readAll()之前可以接收的数据量。
  • 读取缓冲区大小为0(默认值)意味着缓冲区没有大小限制,从而确保没有数据丢失。
  • 另请参见setReadBufferSize()和read()。

readData

原型:

[override virtual protected]
       qint64 QAbstractSocket::readData(char *data, qint64 maxSize)

功能:

readLineData

原型:

[override virtual protected]
       qint64 QAbstractSocket::readLineData(char *data, qint64 maxlen)

功能:

resume

原型:

[virtual]
     void QAbstractSocket::resume()

功能:

  • 继续在套接字上进行数据传输。仅当将套接字设置为在收到通知时暂停并收到通知后,才应使用此方法。当前支持的唯一通知是QSslSocket :: sslErrors()。如果套接字未暂停,则调用此方法将导致未定义的行为。
  • 此功能是在Qt 5.0中引入的。
  • 另请参见pauseMode()和setPauseMode()。

setLocalAddress

原型:

[protected]
       void QAbstractSocket::setLocalAddress(const QHostAddress &address)

功能:

  • 将连接的本地端地址设置为address。
  • 建立连接后,可以在QAbstractSocket的子类中调用此函数以更改localAddress()函数的返回值。代理连接通常使用此功能进行虚拟连接设置。

  • 请注意,此函数在连接之前不会绑定套接字的本地地址(例如QAbstractSocket :: bind())。

  • 此功能在Qt 4.1中引入。

  • 另请参见localAddress(),setLocalPort()和setPeerAddress()

setLocalPort

原型:

[protected]
     void QAbstractSocket::setLocalPort(quint16 port)

功能:

setPauseMode

原型:

void QAbstractSocket::setPauseMode(QAbstractSocket::PauseModes pauseMode)

功能:

  • 控制在收到通知时是否暂停。pauseMode参数指定套接字应该在何种条件下暂停。目前唯一支持的通知是QSslSocket::sslErrors()。如果设置为PauseOnSslErrors,套接字上的数据传输将被暂停,并需要通过调用resume()再次显式启用。默认情况下,这个选项被设置为PauseNever。此选项必须在连接到服务器之前调用,否则将导致未定义的行为。
  • 这个函数是在Qt 5.0中引入的。
  • 另请参见pauseMode()和resume()。

setPeerAddress

原型:

[protected]
     void QAbstractSocket::setPeerAddress(const QHostAddress &address)

功能:

  • 将连接的远端地址设置为address。
  • 您可以在QAbstractSocke的子类中调用此函数,以在建立连接后更改peerAddress()函数的返回值。此特性通常被用于虚拟连接设置的代理连接。
  • 这个函数是在Qt 4.1中引入的。
  • 另请参见peerAddress(),setPeerPort()和setLocalAddress()

setPeerName

原型:

[protected]
     void QAbstractSocket::setPeerName(const QString &name)

功能:

  • 将远程对等方的主机名设置为name
  • 建立连接后,可以在QAbstractSocket的子类中调用此函数以更改peerName()函数的返回值。代理连接通常使用此功能进行虚拟连接设置。
  • 此功能在Qt 4.1中引入。
  • 另请参见peerName()

setPeerPort

原型:

[protected]
     void QAbstractSocket::setPeerPort(quint16 port)

功能:

  • 将连接的远程端的端口设置为port
  • 建立连接后,可以在QAbstractSocket的子类中调用此函数以更改peerPort()函数的返回值。代理连接通常使用此功能进行虚拟连接设置。
  • 此功能在Qt 4.1中引入。
  • 另请参见peerPort(),setPeerAddress()和setLocalPort()。

setProtocolTag

原型:

void QAbstractSocket::setProtocolTag(const QString &tag)

功能:

  • 将此套接字的协议标签设置为tag
  • 此功能在Qt 5.13中引入。
  • 另请参见protocolTag()

setProxy

原型:

void QAbstractSocket::setProxy(const QNetworkProxy &networkProxy)

功能:

  • 将此套接字的显式网络代理设置为networkProxy
  • 要禁用对此套接字使用代理,请使用QNetworkProxy :: NoProxy代理类型:
socket->setProxy(QNetworkProxy::NoProxy);

setReadBufferSize

原型:

[virtual]
    void QAbstractSocket::setReadBufferSize(qint64 size)

功能:

  • QAbstractSocket的内部读取缓冲区的大小设置为大小字节。
  • 如果将缓冲区大小限制为一定大小,则QAbstractSocket缓冲区将不会超过此大小的数据。异常地,缓冲区大小为0意味着读取缓冲区不受限制,并且所有传入的数据都被缓冲。这是默认值。
  • 如果你只在特定的时间点读取数据(例如,在一个实时流应用程序中),或者如果你想保护你的socket不接收过多的数据,这可能最终导致你的应用程序耗尽内存,这个选项是有用的。
  • 只有QTcpSocket使用QAbstractSocket的内部缓冲区。QUdpSocket根本不使用任何缓冲,而是依赖于操作系统提供的隐式缓冲。因此,在QUdpSocket上调用此函数无效。
  • 另请参见readBufferSize()和read()

setSocketDescriptor

原型:

[virtual]
      bool QAbstractSocket::setSocketDescriptor(qintptr socketDescriptor, QAbstractSocket::SocketState socketState = ConnectedState, QIODevice::OpenMode openMode = ReadWrite)

功能:

  • 使用本地套接字描述符socketDescriptor初始化QAbstractSocket。如果socketDescriptor被接受为有效的套接字描述符,则返回true;否则返回false。socket以openMode指定的模式打开,并进入socketState指定的socket状态。读取和写入缓冲区被清除,丢弃任何挂起的数据。
  • 注意:不能用相同的本地套接字描述符初始化两个抽象套接字
  • 另请参见socketDescriptor()。

setSocketError

原型:

[protected]
      void QAbstractSocket::setSocketError(QAbstractSocket::SocketError socketError)

功能:

setSocketOption

原型:

[virtual]
     void QAbstractSocket::setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value)

功能:

setSocketState

原型:

[protected]
     void QAbstractSocket::setSocketState(QAbstractSocket::SocketState state)

功能:

  • 将套接字的状态设置为state
  • 另请参见state()。

socketDescriptor

原型:

[virtual]
     qintptr QAbstractSocket::socketDescriptor() const

功能:

  • 返回QAbstractSocket对象的本机套接字描述符(如果可用);否则返回1。
  • 如果套接字正在使用QNetworkProxy,则返回的描述符可能不能用于本机套接字函数。
  • 当QAbstractSocket处于UnconnectedState时,套接字描述符不可用。
  • 参见setSocketDescriptor()。

socketOption

原型:

[virtual]
     QVariant QAbstractSocket::socketOption(QAbstractSocket::SocketOption option)

功能:

  • 返回选项选项的值。
  • 此功能在Qt 4.6中引入。
  • 另请参见setSocketOption()

socketType

原型:

QAbstractSocket::SocketType QAbstractSocket::socketType() const

功能:

state

原型:

QAbstractSocket::SocketState QAbstractSocket::state() const

功能:

  • 返回套接字的状态。
  • 另请参见error().

waitForBytesWritten

原型:

[override virtual]
      bool QAbstractSocket::waitForBytesWritten(int msecs = 30000)

功能:

  • 重构:QIODevice:: waitForBytesWritten。
  • 该函数将阻塞,直到在套接字上至少写入了一个字节并且已发出bytesWritten()信号为止。函数会在毫秒后超时;缺省超时时间为30000毫秒。
  • 如果发出了bytesWritten()信号,则函数返回true;否则返回false(如果发生错误或操作超时)。
  • 注意:此函数在Windows上可能随机失效。如果您的软件将在Windows上运行,请考虑使用事件循环和bytesWritten()信号。
  • 另请参见waitForReadyRead()。

waitForConnected

原型:

[virtual]
    bool QAbstractSocket::waitForConnected(int msecs = 30000)

功能:

  • 等待,直到套接字连接,直到毫秒。如果连接已经建立,这个函数返回true;否则返回false。在返回false的情况下,可以调用 error()来确定错误的原因。
  • 如果msecs为-1,此函数不会超时。
  • 注意:这个函数可能比msecs等待的时间稍长,这取决于它完成主机查找所需的时间。
  • 注意:多次调用这个函数不会累积时间。如果函数超时,连接进程将中止。
  • 注意:此函数在Windows上可能随机失效。如果您的软件将在Windows上运行,请考虑使用事件循环和connected()信号。
  • 另请参见connectToHost()和connected()

下面的示例最多等待1秒来建立连接:

socket->connectToHost("imap", 143);
if (socket->waitForConnected(1000))
    qDebug("Connected!");

 

waitForDisconnected

原型:

[virtual]
    bool QAbstractSocket::waitForDisconnected(int msecs = 30000)

功能:

  • 等待x毫秒,直到套接字已断开连接,。如果连接被成功断开,这个函数返回true;否则,它将返回false(如果操作超时,如果发生错误,或者这个QAbstractSocket已经断开连接)。在返回false的情况下,可以调用error()来确定错误的原因。
  • 如果毫秒为-1,则此功能不会超时。
  • 注意:此功能在Windows上可能会随机失败。如果您的软件将在Windows上运行,请考虑使用事件循环和 disconnected()信号。
  • 另请参见disconnectFromHost()和close()

下面的示例最多等待一秒钟,以关闭连接:

socket->disconnectFromHost();
if (socket->state() == QAbstractSocket::UnconnectedState
    || socket->waitForDisconnected(1000)) {
        qDebug("Disconnected!");
}

waitForReadyRead

原型:

[override virtual]
    bool QAbstractSocket::waitForReadyRead(int msecs = 30000)

功能:

  • 重构 QIODevice :: waitForReadyRead
  • 这个函数会阻塞,直到有新的数据可供读取,并且发出readyRead()信号。函数会在毫秒后超时;缺省超时时间为30000毫秒。
  • 如果发出readyRead()信号并且有新数据可供读取,则函数返回true;否则返回false(如果发生错误或操作超时)。
  • 注意:此函数在Windows上可能随机失效。如果您的软件将在Windows上运行,请考虑使用事件循环和readyRead()信号。

  • 另请参见waitForBytesWritten()。

writeData

原型:

[override virtual protected]
         qint64 QAbstractSocket::writeData(const char *data, qint64 size)

功能:

QAuthenticator

功能:

  • QAuthenticator类提供一个身份验证对象
  • 注意:此类中的所有函数都是reentent
Header: #include <QAuthenticator>
qmake: QT += network
Since: Qt 4.3

详细说明:

QAuthenticator支持以下身份验证方法:

  • 基本的
  • NTLM版本2
  • 文摘-MD5
  • SPNEGO /谈判

选项:

  • 除了身份验证所需的用户名和密码之外,QAuthenticator对象还可以包含其他选项。

  • options()函数的作用是:查询服务器发送的传入选项;

  •  setOption()函数可用于设置传出选项,由authenticator计算来处理。接受和提供的选项取决于身份验证类型(参见method())。

    下表列出了已知的传入选项以及可接受的传出选项。传入选项的列表不是详尽无遗的,因为服务器可能在任何时候包括额外的信息。然而,传出选项的列表是详尽无遗的,不会处理或发送回服务器的未知选项。

  • 基础: 基本身份验证机制不支持任何传出选项
  •  
   NTLM version 2

Public Functions:

  QAuthenticator(const QAuthenticator &other)
  QAuthenticator()
QAuthenticator & operator=(const QAuthenticator &other)
  ~QAuthenticator()
bool isNull() const
QVariant option(const QString &opt) const
QVariantHash options() const
QString password() const
QString realm() const
void setOption(const QString &opt, const QVariant &value)
void setPassword(const QString &password)
void setUser(const QString &user)
QString user() const
bool operator!=(const QAuthenticator &other) const
bool operator==(const QAuthenticator &other) const

QDnsDomainNameRecord

QDnsHostAddressRecord

 

  •  

猜你喜欢

转载自blog.csdn.net/zhizhengguan/article/details/114872120
今日推荐