提供使网络编程更容易和可移植的类
命名空间
|
包含可用于生成哈希或密钥的函数 |
声明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) 官方文档:
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中引入
- 另请参见deriveKeyPbkdf2,QCryptographicHash和QCryptographicHash :: 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中引入。
- 另请参见deriveKeyPbkdf1,QMessageAuthenticationCode和QCryptographicHash。
原型:
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 } 官方文档:
AlternativeNameEntryType
功能:
- 描述QSslCertificate中替代名称条目的键类型。
- 注意:在Qt 4中,此枚举称为
AlternateNameEntryType
。该名称在Qt 5中已弃用。- 另请参见QSslCertificate :: subjectAlternativeNames()。
Constant Value Description QSsl::EmailEntry
0
电子邮件条目;该条目包含证书有效的电子邮件地址 QSsl::DnsEntry
1
DNS主机名条目;该条目包含证书对其有效的主机名条目。该条目可能包含通配符。 QSsl::IpAddressEntry
2
IP地址条目;该条目包含Qt 5.13中引入的证书有效的IP地址条目 原型:
enum QSsl::AlternativeNameEntryType
官方文档:
EncodingFormat
功能:
- 描述证书和密钥支持的编码格式。
Constant Value Description QSsl::Pem
0
PEM 格式. QSsl::Der
1
DER 格式.. 原型:
enum QSsl::EncodingFormat
官方文档:
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也已打开,因为它带来了安全风险。启用SslOptionDisableCompression可以防止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
默认选项,使用已知是安全的协议 官方文档:
类
缓存实现的接口 |
|
所有套接字类型共有的基本功能 |
|
认证对象 |
|
存储有关域名记录的信息 |
|
存储有关主机地址记录的信息 |
|
IP address |
|
QAbstractNetworkCache
功能:
- QAbstractNetworkCache类提供用于缓存实现的接口
- QAbstractNetworkCache是QNetworkAccessManager使用的每个标准缓存的基类。QAbstractNetworkCache是一个抽象类,不能实例化
- 另请参见QNetworkDiskCache。
Header: #include <QAbstractNetworkCache> qmake: QT + =网络 Since: Qt 4.5 继承: QObject 继承者: 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) 官方文档:
QAbstractNetworkCache
原型:
[protected] QAbstractNetworkCache::QAbstractNetworkCache(QObject *parent = nullptr)
功能:
- 使用给定的parent构造一个抽象的网络缓存。
clear
原型:
[pure virtual slot] void QAbstractNetworkCache::clear()
功能:
~QAbstractNetworkCache
原型:
[virtual] QAbstractNetworkCache::~QAbstractNetworkCache()
功能:
- 销毁缓存。
- 尚未插入的所有操作都将被丢弃。
- 另请参见insert()
cacheSize
原型:
[pure virtual] qint64 QAbstractNetworkCache::cacheSize() const
功能:
- 返回缓存占用的当前大小。根据缓存的实现,这可能是磁盘或内存的大小。
- 在基类中,这是一个纯虚函数。
- 另请参见clear()。
data
原型:
[pure virtual] QIODevice *QAbstractNetworkCache::data(const QUrl &url)
功能:
insert
原型:
[pure virtual] void QAbstractNetworkCache::insert(QIODevice *device)
功能:
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)
功能:
remove
原型:
[pure virtual] bool QAbstractNetworkCache::remove(const QUrl &url)
功能:
updateMetaData
原型:
[pure virtual] void QAbstractNetworkCache :: updateMetaData(const QNetworkCacheMetaData&metaData)
功能:
QAbstractSocket
功能:
- QAbstractSocket类提供所有套接字类型共有的基本功能。
- 注意:此类中的所有函数都是reentent。
head: #include <QAbstractSocket> qmake: QT + =网络 继承: QIODevice 继承者: 解释:
QAbstractSocket是QTcpSocket和QUdpSocket的基类,并且包含这两个类的所有常用功能。如果需要套接字,则有两个选择:
- 实例化QTcpSocket或QUdpSocket。
- 创建一个本机套接字描述符,实例化QAbstractSocket,然后调用setSocketDescriptor()包装该本机套接字。
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将发出errorOccurred(QAbstractSocket :: RemoteHostClosedError),在此期间套接字状态仍为ConnectedState,然后将发出disconnected()信号。
通过调用peerPort()和peerAddress()来获取已连接对等方的端口和地址,peerName()返回传递给connectToHost()的对等方的主机名。localPort()和localAddress()返回本地套接字的端口和地址。
QAbstractSocket提供了一组函数,这些函数可以挂起调用线程,直到发出某些信号为止。这些功能可用于实现阻塞套接字:
- 在建立连接之前,waitForConnected()会阻塞。
- waitForReadyRead()会阻塞,直到可以读取新数据为止。
- waitForBytesWritten()阻塞,直到将一个有效载荷数据写入套接字为止。
- waitForDisconnected()阻塞直到连接关闭。
我们举一个例子:
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线程中使用,以避免冻结用户界面。有关这两种方法的概述,请参见fortuneclient和blockingfortuneclient示例。
注意:我们不建议将阻塞功能与信号一起使用。应该使用两种可能性之一。
QAbstractSocket可以与QTextStream和QDataStream的流运算符(operator <<()和operator >>())一起使用。但是,有一个问题需要注意:在尝试使用operator >>()读取数据之前,必须确保有足够的数据可用。
另请参见QNetworkAccessManager和QTcpServer。
官方文档:
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
功能:
- 该枚举描述了Qt中使用的网络层协议值。
- 另请参见QHostAddress :: protocol()。
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
功能:
- 该枚举描述了可能发生的套接字错误。
- 另请参见QAbstractSocket :: error()和QAbstractSocket :: errorOccurred()
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
功能:
- 该枚举表示可以在套接字上设置的选项。如果需要,可以在从套接字接收connected()信号或从QTcpServer接收新套接字之后进行设置。
- 另请参见QAbstractSocket :: setSocketOption()和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套接字选项。该选项不会影响QIODevice或QAbstractSocket缓冲区。这个枚举值已在Qt 5.3中引入。 QAbstractSocket::ReceiveBufferSizeSocketOption
6
在OS级别设置套接字接收缓冲区的大小(以字节为单位)。这映射到SO_RCVBUF套接字选项。此选项不会影响QIODevice或QAbstractSocket缓冲区(请参见setReadBufferSize())。这个枚举值已在Qt 5.3中引入。 QAbstractSocket::PathMtuSocketOption
7
检索IP堆栈当前已知的路径最大传输单位(PMTU)值(如果有)。一些IP堆栈还允许设置MTU进行传输。这个枚举值是在Qt 5.11中引入的。 TypeOfServiceOption的可能值为:
SocketState
原型:
enum QAbstractSocket::SocketState
功能:
- 该枚举描述了套接字可以处于的不同状态。
- 另请参见QAbstractSocket :: state()。
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
功能:
- 该枚举描述了传输层协议。
- 另请参见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)
功能:
- 创建一个类型为socketType的新抽象套接字。该父参数传递给QObject的的构造函数。
- 另请参见socketType(),QTcpSocket和QUdpSocket。
connected
原型:
[signal] void QAbstractSocket::connected()
功能:
- 调用connectToHost()并成功建立连接后,将发出此信号。
- 注意:在某些操作系统上,connected()信号可能直接从connectToHost()调用发出,以连接到本地主机。
- 另请参见connectToHost()和 disconnected()
disconnected
原型:
[signal] void QAbstractSocket::disconnected()
功能:
- 这个信号在套接字断开连接时发出。
- 警告:如果您需要在连接到该信号的插槽中删除该信号的 sender(),请使用 deleteLater()函数。
- 另请参阅 connectToHost(), disconnectFromHost(), abort().
errorOccurred
原型:
[signal] void QAbstractSocket::errorOccurred(QAbstractSocket::SocketError socketError)
功能:
- 发生错误后发出此信号。该socketError参数描述错误的发生的类型
- 当发出此信号时,套接字可能还没有准备好进行重新连接尝试。在这种情况下,应该从事件循环尝试重新连接。例如,使用QTimer :: singleShot,将0作为超时时间。
- QAbstractSocket :: SocketError不是一个注册的元类型,因此对于排队连接,您必须使用Q_DECLARE_METATYPE()和qRegisterMetaType()注册它。
- 这个函数是在Qt 5.15中引入的。
- 另请参阅error(),errorString()和创建自定义Qt类型。
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的状态更改时,都会发出此信号。该socketState参数是新的状态。
- QAbstractSocket :: SocketState不是注册的元类型,因此对于排队连接,您必须使用Q_DECLARE_METATYPE()和qRegisterMetaType()注册它。
- 另请参见state()和创建自定义Qt类型。
〜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
功能:
- 重构:QIODevice :: bytesAvailable()const
- 返回等待读取的传入字节数。
另请参见bytesToWrite()和read()。
bytesToWrite
原型:
[override virtual] qint64 QAbstractSocket::bytesToWrite() const
功能:
- 重构: QIODevice::bytesToWrite() const.
- 返回等待写入的字节数。当控制返回到事件循环或调用flush()时,将写入字节。
- 另请参见bytesAvailable() and flush().
canReadLine
原型:
[override virtual]bool QAbstractSocket::canReadLine() const
功能:
- 重构:QIODevice:: canReadLine() const
- 是否可以从套接字读取一行数据
- 另请参见readLine()。
close
原型:
[override virtual] void QAbstractSocket::close()
功能:
- 重新实现:QIODevice :: close()。
- 关闭套接字的I / O设备,并调用DisconnectFromHost()关闭套接字的连接。
- 有关关闭I / O设备时发生的操作的说明,请参见QIODevice :: close()。
- 另请参见abort()。
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()
功能:
试图关闭套接字。如果存在等待写入的未决数据,QAbstractSocket将进入ClosingState并等待直到所有数据都被写入。最终,它将进入UnconnectedState并发出disconnected()信号。
另请参见connectToHost()
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
功能:
- 返回本地套接字的主机地址(如果有);否则返回QHostAddress :: Null。
- 这通常是主机的主要IP地址,但可以是QHostAddress :: LocalHost(127.0.0.1),用于连接到本地主机
- 另请参见localPort(),peerAddress()和setLocalAddress()。
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
功能:
- 如果套接字处于ConnectedState状态,则返回已连接对等体的地址; 否则返回QHostAddress :: Null。
- 另请参见peerName(),peerPort(),localAddress()和setPeerAddress()
peerName
原型:
QString QAbstractSocket::peerName() const
功能:
- 返回 connectToHost()指定的对等体名称,如果 connectToHost()未被调用,则返回空QString。
- 另请参见peerAddress(),peerPort()和setPeerName()。
peerPort
原型:
quint16 QAbstractSocket::peerPort() const
功能:
- 如果套接字处于ConnectedState,则返回已连接对等体的端口;否则返回0。
- 另请参见peerAddress(), localPort(), and setPeerPort().
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)
功能:
- 重新实现:QIODevice::readData(char *data, qint64 maxSize).
readLineData
原型:
[override virtual protected] qint64 QAbstractSocket::readLineData(char *data, qint64 maxlen)
功能:
- 重新实现:QIODevice::readLineData(char *data, qint64 maxSize).
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)
功能:
- 将连接本地的端口设置为port。
- 建立连接后,可以在QAbstractSocket的子类中调用此函数以更改localPort()函数的返回值。代理连接通常使用此功能进行虚拟连接设置。
- 请注意,此函数在连接之前不会绑定套接字的本地端口(例如QAbstractSocket :: bind())。
- 此功能在Qt 4.1中引入。
- 另请参见localPort(),localAddress(),setLocalAddress()和setPeerPort()。
setPauseMode
原型:
void QAbstractSocket::setPauseMode(QAbstractSocket::PauseModes pauseMode)
功能:
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);
- 代理的默认值为QNetworkProxy :: DefaultProxy,这意味着套接字将使用应用程序设置:如果使用QNetworkProxy :: setApplicationProxy设置了代理,它将使用该设置。否则,如果一个工厂设定QNetworkProxyFactory :: setApplicationProxyFactory,它会查询该工厂型QNetworkProxyQuery ::的TCPSocket。
- 此功能在Qt 4.1中引入。
- 另请参见proxy(),QNetworkProxy和QNetworkProxyFactory :: queryProxy()。
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)
功能:
- 将最后一次发生的错误类型设置为socketError。
- 另请参见setSocketState()和setErrorString()
setSocketOption
原型:
[virtual] void QAbstractSocket::setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value)
功能:
- 将给定选项设置为value描述的值。
- 注意:在Windows运行时上,必须在连接套接字之前设置QAbstractSocket :: KeepAliveOption。
- 此功能在Qt 4.6中引入。
- 另请参见socketOption()。
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
功能:
- 返回套接字类型(TCP,UDP或其他)。
- 另请参见QTcpSocket和QUdpSocket。
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)
功能:
- 重新实现:QIODevice :: writeData(const char * data,qint64 maxSize)。
QAuthenticator
功能:
- QAuthenticator类提供一个身份验证对象
- 注意:此类中的所有函数都是reentent。
Header: #include <QAuthenticator> qmake: QT += network Since: Qt 4.3 详细说明:
- QAuthenticator类通常用于QNetworkAccessManager和QAbstractSocket的authenticationRequired()和proxyAuthenticationRequired()信号中。
- 该类提供了一种在访问需要身份验证的服务时所需的身份验证信息传递回套接字的方法
QAuthenticator支持以下身份验证方法:
- 基本的
- NTLM版本2
- 文摘-MD5
- SPNEGO /谈判
选项:
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 |