QAbstractSocket Class Reference

[QtNetwork module]

该QAbstractSocket类提供通用于所有的套接字类型的基本功能。More…

继承QIODevice

通过继承QTcpSocketQUdpSocket

Types

  • enum NetworkLayerProtocol { IPv4Protocol, IPv6Protocol, UnknownNetworkLayerProtocol }
  • enum SocketError { ConnectionRefusedError, RemoteHostClosedError, HostNotFoundError, SocketAccessError, ..., UnknownSocketError }
  • enum SocketOption { LowDelayOption, KeepAliveOption, MulticastTtlOption, MulticastLoopbackOption }
  • enum SocketState { UnconnectedState, HostLookupState, ConnectingState, ConnectedState, ..., ClosingState }
  • enum SocketType { TcpSocket, UdpSocket, UnknownSocketType }

Methods

  • __init__ (self, SocketType socketType, QObject parent)
  • abort (self)
  • bool atEnd (self)
  • int bytesAvailable (self)
  • int bytesToWrite (self)
  • bool canReadLine (self)
  • close (self)
  • connectToHost (self, QString hostName, int port, QIODevice.OpenMode mode = QIODevice.ReadWrite)
  • connectToHost (self, QHostAddress address, int port, QIODevice.OpenMode mode = QIODevice.ReadWrite)
  • connectToHostImplementation (self, QString hostName, int port, QIODevice.OpenMode mode = QIODevice.ReadWrite)
  • disconnectFromHost (self)
  • disconnectFromHostImplementation (self)
  • SocketError error (self)
  • bool flush (self)
  • bool isSequential (self)
  • bool isValid (self)
  • QHostAddress localAddress (self)
  • int localPort (self)
  • QHostAddress peerAddress (self)
  • QString peerName (self)
  • int peerPort (self)
  • QNetworkProxy proxy (self)
  • int readBufferSize (self)
  • str readData (self, int maxlen)
  • str readLineData (self, int maxlen)
  • setLocalAddress (self, QHostAddress address)
  • setLocalPort (self, int port)
  • setPeerAddress (self, QHostAddress address)
  • setPeerName (self, QString name)
  • setPeerPort (self, int port)
  • setProxy (self, QNetworkProxy networkProxy)
  • setReadBufferSize (self, int size)
  • bool setSocketDescriptor (self, int socketDescriptor, SocketState state = QAbstractSocket.ConnectedState, QIODevice.OpenMode mode = QIODevice.ReadWrite)
  • setSocketError (self, SocketError socketError)
  • setSocketOption (self, SocketOption option, QVariant value)
  • setSocketState (self, SocketState state)
  • int socketDescriptor (self)
  • QVariant socketOption (self, SocketOption option)
  • SocketType socketType (self)
  • SocketState state (self)
  • bool waitForBytesWritten (self, int msecs = 30000)
  • bool waitForConnected (self, int msecs = 30000)
  • bool waitForDisconnected (self, int msecs = 30000)
  • bool waitForReadyRead (self, int msecs = 30000)
  • int writeData (self, str data)

Qt Signals

  • void connected ()
  • void disconnected ()
  • void error (QAbstractSocket::SocketError)
  • void hostFound ()
  • void proxyAuthenticationRequired (const QNetworkProxy&,QAuthenticator *)
  • void stateChanged (QAbstractSocket::SocketState)

Detailed Description

该QAbstractSocket类提供通用于所有的套接字类型的基本功能。

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( ) 。如果发生错误,在任何阶段,error()被发射。每当状态发生变化,stateChanged()被发射。为方便起见,isValid( )返回True如果套接字已准备好进行读取和写入,但请注意,插座的状态必须ConnectedState阅读和写作之前可能发生。

通过调用读取或写入数据read()或write( ) ,或者使用的方便功能readLine()和readAll( ) 。 QAbstractSocket也继承getChar( )putChar()和ungetChar( )从QIODevice,其中单字节工作。该bytesWritten当数据已经被写入到插座(即,当客户端已读出的数据)( )信号被发射。注意Qt不限制写入缓冲区的大小。您可以通过听这个信号监视它的大小。

readyRead每一个新的数据块已到达的时间()信号被发射。bytesAvailable()然后返回可用于读取的字节数。通常情况下,您将在readyRead()信号到一个槽和阅读有所有可用的数据。如果你不立即读取所有数据,其馀数据仍然可用后,任何新进入的数据将被追加到QAbstractSocket的内部读缓冲区。来限制读缓冲区的大小,调用setReadBufferSize( ) 。

关闭套接字,调用disconnectFromHost( ) 。 QAbstractSocket进入QAbstractSocket.ClosingState。在所有挂起的数据已经写入到socket , QAbstractSocket实际上关闭套接字,进入QAbstractSocket.ClosedState ,并发出disconnected( ) 。如果您想立即中止连接,丢弃所有未决的数据,调用abort( )来代替。如果远程主机关闭连接, QAbstractSocket会发出错误(QAbstractSocket.RemoteHostClosedError) ,在此期间,插座状态仍将是ConnectedState,然后在disconnected()信号将被发射。

所连接的对端的端口和地址是通过调用取peerPort()和peerAddress( ) 。peerName()返回对端的主机名,它被传递到connectToHost( ) 。localPort()和localAddress( )返回本地套接字的端口和地址。

QAbstractSocket提供了一组挂起调用线程,直到某个信号发射的功能。这些功能可以用来实现阻塞套接字:

我们显示一个例子:

  1. int numRead = 0, numReadTotal = 0;
  2. char buffer[50];
  3. forever {
  4. numRead = socket.read(buffer, 50);
  5. // do whatever with array
  6. numReadTotal += numRead;
  7. if (numRead == 0 && !socket.waitForReadyRead())
  8. break;
  9. }

If waitForReadyRead()返回False ,该连接已关闭或发生错误。

与阻塞套接字编程是一个非阻塞套接字编程完全不同。阻塞套接字并不需要一个事件循环,并通常会导致简单的代码。然而,在一个图形用户界面的应用程序,阻塞插座只应在非GUI线程使用,以避免冻结的用户界面。请参阅network/fortuneclientnetwork/blockingfortuneclient举例而言,两种方法的概述。

Note:我们不鼓励使用的阻塞函数信号一起。应该使用其中的两种可能性。

QAbstractSocket可以被用于QTextStreamQDataStream的流运算符(运算符\u003c\u003c ()和operator \u003e\u003e ( ) ) 。有一个问题需要注意,虽然:你必须确保有足够的数据可用尝试使用运算符来读取它之前\u003e\u003e ( ) 。


Type Documentation

  1. QAbstractSocket.NetworkLayerProtocol

这个枚举变量描述的Qt使用的网络层协议的值。

Constant Value Description
QAbstractSocket.IPv4Protocol 0 IPv4的
QAbstractSocket.IPv6Protocol 1 IPv6的
QAbstractSocket.UnknownNetworkLayerProtocol -1 除IPv4和IPv6

See also QHostAddress.protocol( ) 。

  1. 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 指定的地址QUdpSocket.bind()已经在使用中并且被设置为独占的。
QAbstractSocket.SocketAddressNotAvailableError 9 指定的地址QUdpSocket.bind( )不属于主机。
QAbstractSocket.UnsupportedSocketOperationError 10 不是由本地操作系统(例如,缺乏支持IPv6 )的支持请求的套接字操作。
QAbstractSocket.ProxyAuthenticationRequiredError 12 该插座是使用代理,而代理服务器需要身份验证。
QAbstractSocket.SslHandshakeFailedError 13 在SSL / TLS握手失败,因此连接已关闭(仅在使用QSslSocket) (此值被引入4.4 。 )
QAbstractSocket.UnfinishedSocketOperationError 11 使用QAbstractSocketEngine只,最后的操作尝试尚未完成(仍然在后台进程) 。 (这个值被引入4.4 。 )
QAbstractSocket.ProxyConnectionRefusedError 14 无法联系的代理服务器,因为连接到该服务器被拒绝(这个值被引入4.5 。 )
QAbstractSocket.ProxyConnectionClosedError 15 到代理服务器的连接意外被关闭(连接到最终的同行建立之前) (此值是在4.5推出。 )
QAbstractSocket.ProxyConnectionTimeoutError 16 到代理服务器的连接超时或代理服务器停在认证阶段响应。 (这个值被引入4.5 。 )
QAbstractSocket.ProxyNotFoundError 17 设置代理地址setProxy( ) (或应用程序代理)未找到。 (这个值被引入4.5 。 )
QAbstractSocket.ProxyProtocolError 18 在连接协商与代理服务器,因为从代理服务器的响应无法被理解。 (这个值被引入4.5 。 )
QAbstractSocket.UnknownSocketError -1 发生不明的错误。

See also QAbstractSocket.error( ) 。

  1. QAbstractSocket.SocketOption

这个枚举表示可以在一个插座可以设置的选项。如果需要的话,它们可以在接收之后进行设置connected()从插座或收到一个新的套接字从后信号QTcpServer

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 (多播环回)套接字选项。

这个枚举被引入或修改的Qt 4.6 。

See also QAbstractSocket.setSocketOption()和QAbstractSocket.socketOption( ) 。

  1. 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 仅供内部使用。

See also QAbstractSocket.state( ) 。

  1. QAbstractSocket.SocketType

这个枚举变量描述传输层协议。

Constant Value Description
QAbstractSocket.TcpSocket 0 TCP
QAbstractSocket.UdpSocket 1 UDP
QAbstractSocket.UnknownSocketType -1 除了TCP和UDP

See also QAbstractSocket.socketType( ) 。


Method Documentation

  1. QAbstractSocket.__init__ (self, SocketType socketType, QObject parent)

parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。

创建类型的新抽象插座socketType。该parent参数被传递给QObject的构造。

See also socketType( )QTcpSocketQUdpSocket

  1. QAbstractSocket.abort (self)

中止当前连接并重置插口。不像disconnectFromHost( ) ,这个函数立即关闭套接字,丢弃在写缓冲区任何挂起的数据。

See also disconnectFromHost()和close( ) 。

  1. bool QAbstractSocket.atEnd (self)

从重新实现QIODevice.atEnd( ) 。

如果没有更多的数据,目前可供读取,则返回True ,否则返回False 。

读数从插座在一个循环中的数据时,此功能是最常用的。例如:

  1. // This slot is connected to QAbstractSocket.readyRead()
  2. void SocketClass.readyReadSlot()
  3. {
  4. while (!socket.atEnd()) {
  5. [QByteArray](qbytearray.html) data = socket.read(100);
  6. ....
  7. }
  8. }

See also bytesAvailable()和readyRead( ) 。

  1. int QAbstractSocket.bytesAvailable (self)

从重新实现QIODevice.bytesAvailable( ) 。

返回传入的字节正在等待被读取的次数。

See also bytesToWrite()和read( ) 。

  1. int QAbstractSocket.bytesToWrite (self)

从重新实现QIODevice.bytesToWrite( ) 。

返回正在等待被写入的字节数。该字节被写入时,控制返回到事件循环或当flush()被调用。

See also bytesAvailable()和flush( ) 。

  1. bool QAbstractSocket.canReadLine (self)

从重新实现QIODevice.canReadLine( ) 。

返回True如果一行数据可以从套接字读取,否则返回False 。

See also readLine( ) 。

  1. QAbstractSocket.close (self)

从重新实现QIODevice.close( ) 。

关闭套接字的I / O设备,断开与主机插座的连接,关闭套接字,并重置姓名,地址,端口号和底层套接字描述符。

See QIODevice.close( ),用于当一个I / O设备被关闭时发生的动作的说明。

See also abort( ) 。

  1. QAbstractSocket.connectToHost (self, QString hostName, int port, QIODevice.OpenMode mode = QIODevice.ReadWrite)

企图使一个连接hostName在给定的port

该插座是在给定的开openMode并首次进入HostLookupState,然后执行一个主机名查找hostName。如果查找成功,hostFound()被发射和QAbstractSocket进入ConnectingState。然后,它尝试连接到由查询返回的地址或地址。最后,如果建立了连接,QAbstractSocket进入ConnectedState并发出connected( ) 。

在任何点,该插座能发射error()来通知发生了错误。

hostName可以是字符串形式(例如,“ 43.195.83.32 ” )的IP地址,也可以是主机名(例如,“ example.com ” ) 。QAbstractSocket会做只有当需要查找。port是在本地字节顺序。

See also state( )peerName( )peerAddress( )peerPort()和waitForConnected( ) 。

  1. QAbstractSocket.connectToHost (self, QHostAddress address, int port, QIODevice.OpenMode mode = QIODevice.ReadWrite)

这是一个重载函数。

企图使一个连接address端口port

  1. QAbstractSocket.connectToHostImplementation (self, QString hostName, int port, QIODevice.OpenMode mode = QIODevice.ReadWrite)

这种方法也是一个Qt槽与C + +的签名void connectToHostImplementation(const QString&,quint16,QIODevice::OpenMode = QIODevice.ReadWrite)

包含的实施connectToHost( ) 。

企图使一个连接hostName在给定的port。该插座是在给定的开openMode

这个函数是Qt 4.1中引入。

  1. QAbstractSocket.disconnectFromHost (self)

试图关闭套接字。如果有挂起的数据等待写入,QAbstractSocket将进入ClosingState并等待,直到所有数据已经写入。最终,将进入UnconnectedState和发射disconnected()信号。

See also connectToHost( ) 。

  1. QAbstractSocket.disconnectFromHostImplementation (self)

这种方法也是一个Qt槽与C + +的签名void disconnectFromHostImplementation()

包含的实施disconnectFromHost( ) 。

这个函数是Qt 4.1中引入。

  1. SocketError QAbstractSocket.error (self)

[

返回上次发生错误的类型。

]($docs-qabstractsocket.html#SocketError-enum)

See also state()和errorString( ) 。

  1. bool QAbstractSocket.flush (self)

该函数将尽可能从内部写缓冲区的底层网络接口,而不会阻塞。如果任何数据被写入时,该函数将返回True,否则返回False。

调用此函数,如果你需要QAbstractSocket立即开始发送缓冲数据。成功写入的字节数依赖于操作系统。在大多数情况下,你不需要调用这个函数,因为QAbstractSocket将自动开始发送数据,一旦控制返回到事件循环。在不存在的事件循环,调用waitForBytesWritten( )来代替。

See also write()和waitForBytesWritten( ) 。

  1. bool QAbstractSocket.isSequential (self)

从重新实现QIODevice.isSequential( ) 。

  1. bool QAbstractSocket.isValid (self)

返回True如果套接字是有效的,并准备使用,否则返回False 。

Note:套接字的状态必须ConnectedState阅读和写作之前可能发生。

See also state( ) 。

  1. QHostAddress QAbstractSocket.localAddress (self)

返回本地套接字如果可用的主机地址,否则返回QHostAddress.Null

这通常是在主机的主IP地址,但也可以是QHostAddress.LocalHost( 127.0.0.1)来连接到本地主机。

See also localPort( )peerAddress()和setLocalAddress( ) 。

  1. int QAbstractSocket.localPort (self)

返回本地套接字如果可用的主机端口号(本地字节顺序) ,否则返回0 。

See also localAddress( )peerPort()和setLocalPort( ) 。

  1. QHostAddress QAbstractSocket.peerAddress (self)

返回所连接的对端的地址,如果套接字是在ConnectedState否则返回QHostAddress.Null

See also peerName( )peerPort( )localAddress()和setPeerAddress( ) 。

  1. QString QAbstractSocket.peerName (self)

所指定的返回对端的名称connectToHost( ) ,或空QString如果connectToHost( )尚未被调用。

See also peerAddress( )peerPort()和setPeerName( ) 。

  1. int QAbstractSocket.peerPort (self)

返回所连接的对端的端口,如果套接字是在ConnectedState否则返回0 。

See also peerAddress( )localPort()和setPeerPort( ) 。

  1. QNetworkProxy QAbstractSocket.proxy (self)

返回此套接字的网络代理。默认情况下,QNetworkProxy.DefaultProxy被使用,这意味着该套接字将查询应用程序的默认代理设置。

这个函数是Qt 4.1中引入。

See also setProxy( )QNetworkProxyQNetworkProxyFactory

  1. int QAbstractSocket.readBufferSize (self)

返回内部读缓冲区的大小。这限制了数据的客户端可以在打电话之前收取的金额read()或readAll( ) 。

0读缓冲区的大小(默认值)意味着缓冲区有没有大小限制,以确保数据不会丢失。

See also setReadBufferSize()和read( ) 。

  1. str QAbstractSocket.readData (self, int maxlen)

从重新实现QIODevice.readData( ) 。

  1. str QAbstractSocket.readLineData (self, int maxlen)

从重新实现QIODevice.readLineData( ) 。

  1. QAbstractSocket.setLocalAddress (self, QHostAddress address)

设置到一个连接的本地端的地址address

您可以在子类中调用这个函数QAbstractSocket改变的返回值localAddress连接后()函数已经建立。此功能是常用的代理服务器连接虚拟连接设置。

请注意,此功能对套接字的本地地址的连接(例如,之前没有绑定,QUdpSocket.bind())。

这个函数是Qt 4.1中引入。

See also localAddress( )setLocalPort()和setPeerAddress( ) 。

  1. QAbstractSocket.setLocalPort (self, int port)

设置端口上连接的本地端port

您可以在子类中调用这个函数QAbstractSocket改变的返回值localPort连接后()函数已经建立。此功能是常用的代理服务器连接虚拟连接设置。

请注意,这个函数不套接字的本地端口绑定的连接(如前,QUdpSocket.bind())。

这个函数是Qt 4.1中引入。

See also localPort( )localAddress( )setLocalAddress()和setPeerPort( ) 。

  1. QAbstractSocket.setPeerAddress (self, QHostAddress address)

设置连接到的远程端的地址address

您可以在子类中调用这个函数QAbstractSocket改变的返回值peerAddress连接后()函数已经建立。此功能是常用的代理服务器连接虚拟连接设置。

这个函数是Qt 4.1中引入。

See also peerAddress( )setPeerPort()和setLocalAddress( ) 。

  1. QAbstractSocket.setPeerName (self, QString name)

设置远端的主机名name

您可以在子类中调用这个函数QAbstractSocket改变的返回值peerName连接后()函数已经建立。此功能是常用的代理服务器连接虚拟连接设置。

这个函数是Qt 4.1中引入。

See also peerName( ) 。

  1. QAbstractSocket.setPeerPort (self, int port)

设置连接到的远程端的端口port

您可以在子类中调用这个函数QAbstractSocket改变的返回值peerPort连接后()函数已经建立。此功能是常用的代理服务器连接虚拟连接设置。

这个函数是Qt 4.1中引入。

See also peerPort( )setPeerAddress()和setLocalPort( ) 。

  1. QAbstractSocket.setProxy (self, QNetworkProxy networkProxy)

设置此套接字明确网络代理networkProxy

要禁用使用代理的这个插座,使用QNetworkProxy.NoProxy代理类型:

  1. socket->setProxy([QNetworkProxy]($docs-qnetworkproxy.html).NoProxy);

对于代理的默认值是QNetworkProxy.DefaultProxy,这意味着套接字将使用应用程序设置:如果将代理设置QNetworkProxy.setApplicationProxy ,它将使用,否则,如果一个工厂设置QNetworkProxyFactory.setApplicationProxyFactory ,它会查询该工厂类型QNetworkProxyQuery.TcpSocket

这个函数是Qt 4.1中引入。

See also proxy( )QNetworkProxyQNetworkProxyFactory.queryProxy( ) 。

  1. QAbstractSocket.setReadBufferSize (self, int size)

载的大小QAbstractSocket的内部读缓冲区是size字节。

如果缓冲区大小被限制为一定的大小,QAbstractSocket将不缓存数据超过此大小。特殊情况下,为0的缓冲区大小意味着读缓存器是无限的,所有输入的数据进行缓冲。这是默认的。

此选项很有用,如果你只在读取特定时间点的数据(例如,在实时流应用程序),或者如果你想保护你的插座对接收的数据过多,最终可能导致应用程序用完内存。

QTcpSocket uses QAbstractSocket的内部缓冲区;QUdpSocket不使用任何缓冲在所有的,而是依赖于由操作系统提供的隐式缓冲。正因为如此,调用这个函数上QUdpSocket没有任何影响。

See also readBufferSize()和read( ) 。

  1. bool QAbstractSocket.setSocketDescriptor (self, int socketDescriptor, SocketState state = QAbstractSocket.ConnectedState, QIODevice.OpenMode mode = QIODevice.ReadWrite)

初始化QAbstractSocket与本地套接字描述符socketDescriptor。返回True如果socketDescriptor被接受为有效的套接字描述符,否则返回False 。该插座是由指定的模式打开openMode,并进入由指定的套接字状态socketState

Note:这是不可能的初始化两个抽象插座,相同的本地套接字描述符。

See also socketDescriptor( ) 。

  1. QAbstractSocket.setSocketError (self, SocketError socketError)

设置最后对发生错误的类型socketError

See also setSocketState()和setErrorString( ) 。

  1. QAbstractSocket.setSocketOption (self, SocketOption option, QVariant value)

设置给定option由所描述的值value

此功能被引入Qt的4.6 。

See also socketOption( ) 。

  1. QAbstractSocket.setSocketState (self, SocketState state)

设置套接字的状态,以state

See also state( ) 。

  1. int QAbstractSocket.socketDescriptor (self)

返回的本地套接字描述符QAbstractSocket如果对象是可用的,否则返回-1 。

如果套接字使用QNetworkProxy,返回的描述符可能无法与原生socket函数使用。

套接字描述符时,无法使用QAbstractSocketUnconnectedState

See also setSocketDescriptor( ) 。

  1. QVariant QAbstractSocket.socketOption (self, SocketOption option)

返回的值option选项。

此功能被引入Qt的4.6 。

See also setSocketOption( ) 。

  1. SocketType QAbstractSocket.socketType (self)

[

返回套接字的类型( TCP,UDP或其他) 。

]($docs-qabstractsocket.html#SocketType-enum)

See also QTcpSocketQUdpSocket

  1. SocketState QAbstractSocket.state (self)

[

返回套接字的状态。

]($docs-qabstractsocket.html#SocketState-enum)

See also error( ) 。

  1. bool QAbstractSocket.waitForBytesWritten (self, int msecs = 30000)

从重新实现QIODevice.waitForBytesWritten( ) 。

  1. bool QAbstractSocket.waitForConnected (self, int msecs = 30000)

等待,直到套接字连接,高达msecs毫秒。如果连接已经建立,该函数将返回True,否则返回False 。当它返回False的情况下,你可以调用error()来确定错误的原因。

下面的例子最多等待1秒,以建立连接:

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

如果毫秒为-1 ,此功能将不会超时。

Note:此功能可能稍长比等待msecs取决于所花费的时间来完成主机查找。

Note:多次调用该函数不累积的时间。如果函数超时,连接过程将被中止。

See also connectToHost()和connected( ) 。

  1. bool QAbstractSocket.waitForDisconnected (self, int msecs = 30000)

等待,直到插座断开连接,直至msecs毫秒。如果连接已经断开,则该函数返回True,否则返回False 。当它返回False的情况下,你可以调用error()来确定错误的原因。

下面的例子最多等待一秒钟的连接被关闭:

  1. socket->disconnectFromHost();
  2. if (socket->state() == [QAbstractSocket]($docs-qabstractsocket.html).UnconnectedState ||
  3. socket->waitForDisconnected(1000))
  4. qDebug("Disconnected!");

如果毫秒为-1 ,此功能将不会超时。

See also disconnectFromHost()和close( ) 。

  1. bool QAbstractSocket.waitForReadyRead (self, int msecs = 30000)

从重新实现QIODevice.waitForReadyRead( ) 。

此功能块,直到新的数据可供读取和readyRead()信号已经发出。之后,该函数将超时msecs毫秒,默认的超时时间为30000毫秒。

该函数返回True,如果readyRead( )信号被发射,并有可供读取新数据,否则返回False (如果发生错误或者操作超时) 。

See also waitForBytesWritten( ) 。

  1. int QAbstractSocket.writeData (self, str data)

从重新实现QIODevice.writeData( ) 。


Qt Signal Documentation

  1. void connected ()

这是该信号的默认超载。

之后此信号被发射connectToHost( )被调用,并连接已成功建立。

Note:在一些操作系统上的连接()信号可以直接从所发射的connectToHost( )调用来连接到本地主机。

See also connectToHost()和disconnected( ) 。

  1. void disconnected ()

这是该信号的默认超载。

当插座已断开这个信号被发射。

Warning:如果您需要删除sender在连接到它的插槽这个信号的( ) ,请使用deleteLater()功能。

See also connectToHost( )disconnectFromHost()和abort( ) 。

  1. void error (QAbstractSocket::SocketError)

这是该信号的默认超载。

这个信号被发射时发生错误之后。该socketError参数描述发生错误的类型。

QAbstractSocket.SocketError是不是注册的元类型,所以排队的连接,你将不得不用它注册Q_DECLARE_METATYPE()和qRegisterMetaType( ) 。

See also error( )errorString()和Creating Custom Qt Types

  1. void hostFound ()

这是该信号的默认超载。

之后此信号被发射connectToHost( )被调用并且主机查找成功。

Note:由于Qt的4.6.3QAbstractSocket可以从发射hostFound ()直接connectToHost( )调用,因为一个DNS结果可能已经被缓存。

See also connected( ) 。

  1. void proxyAuthenticationRequired (const QNetworkProxy&,QAuthenticator *)

这是该信号的默认超载。

这个信号可以被发射时,一proxy需要进行身份验证时使用。该authenticator对象可以被填充在与必需的细节,以便验证和持续的连接。

Note:这是不可能使用QueuedConnection连接到该信号,就好像所述认证没有被填充了新的信息时,该信号返回的连接失败。

此功能被引入Qt的4.3 。

See also QAuthenticatorQNetworkProxy

  1. void stateChanged (QAbstractSocket::SocketState)

这是该信号的默认超载。

这个信号被发射时QAbstractSocket的状态变化。该socketState参数是新的状态。

QAbstractSocket.SocketState是不是注册的元类型,所以排队的连接,你将不得不与Q_REGISTER_METATYPE (注册它)和qRegisterMetaType( ) 。

See also state()和Creating Custom Qt Types