QAbstractSocket Class Reference
[QtNetwork module]
该QAbstractSocket类提供通用于所有的套接字类型的基本功能。More…
继承QIODevice。
通过继承QTcpSocket和QUdpSocket。
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为基类QTcpSocket和QUdpSocket并包含这两个类的所有常见功能。如果你需要一个插座,你有两种选择:
- Instantiate QTcpSocket or QUdpSocket.
- Create a native socket descriptor, instantiate QAbstractSocket, and call setSocketDescriptor() to wrap the native socket.
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提供了一组挂起调用线程,直到某个信号发射的功能。这些功能可以用来实现阻塞套接字:
- waitForConnected() blocks until a connection has been established.
- waitForReadyRead() blocks until new data is available for reading.
- waitForBytesWritten() blocks until one payload of data has been written to the socket.
- waitForDisconnected() blocks until the connection has closed.
我们显示一个例子:
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;
}
If waitForReadyRead()返回False ,该连接已关闭或发生错误。
与阻塞套接字编程是一个非阻塞套接字编程完全不同。阻塞套接字并不需要一个事件循环,并通常会导致简单的代码。然而,在一个图形用户界面的应用程序,阻塞插座只应在非GUI线程使用,以避免冻结的用户界面。请参阅network/fortuneclient和network/blockingfortuneclient举例而言,两种方法的概述。
Note:我们不鼓励使用的阻塞函数信号一起。应该使用其中的两种可能性。
QAbstractSocket可以被用于QTextStream和QDataStream的流运算符(运算符\u003c\u003c ()和operator \u003e\u003e ( ) ) 。有一个问题需要注意,虽然:你必须确保有足够的数据可用尝试使用运算符来读取它之前\u003e\u003e ( ) 。
Type Documentation
QAbstractSocket.NetworkLayerProtocol
这个枚举变量描述的Qt使用的网络层协议的值。
Constant | Value | Description |
---|---|---|
QAbstractSocket.IPv4Protocol |
0 |
IPv4的 |
QAbstractSocket.IPv6Protocol |
1 |
IPv6的 |
QAbstractSocket.UnknownNetworkLayerProtocol |
-1 |
除IPv4和IPv6 |
See also QHostAddress.protocol( ) 。
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( ) 。
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( ) 。
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( ) 。
QAbstractSocket.SocketType
这个枚举变量描述传输层协议。
Constant | Value | Description |
---|---|---|
QAbstractSocket.TcpSocket |
0 |
TCP |
QAbstractSocket.UdpSocket |
1 |
UDP |
QAbstractSocket.UnknownSocketType |
-1 |
除了TCP和UDP |
See also QAbstractSocket.socketType( ) 。
Method Documentation
QAbstractSocket.__init__ (self, SocketType socketType, QObject parent)
该parent的说法,如果不是没有,原因self通过Qt的,而不是PyQt的拥有。
创建类型的新抽象插座socketType。该parent参数被传递给QObject的构造。
See also socketType( )QTcpSocket和QUdpSocket。
QAbstractSocket.abort (self)
中止当前连接并重置插口。不像disconnectFromHost( ) ,这个函数立即关闭套接字,丢弃在写缓冲区任何挂起的数据。
See also disconnectFromHost()和close( ) 。
bool QAbstractSocket.atEnd (self)
从重新实现QIODevice.atEnd( ) 。
如果没有更多的数据,目前可供读取,则返回True ,否则返回False 。
读数从插座在一个循环中的数据时,此功能是最常用的。例如:
// This slot is connected to QAbstractSocket.readyRead()
void SocketClass.readyReadSlot()
{
while (!socket.atEnd()) {
[QByteArray](qbytearray.html) data = socket.read(100);
....
}
}
See also bytesAvailable()和readyRead( ) 。
int QAbstractSocket.bytesAvailable (self)
从重新实现QIODevice.bytesAvailable( ) 。
返回传入的字节正在等待被读取的次数。
See also bytesToWrite()和read( ) 。
int QAbstractSocket.bytesToWrite (self)
从重新实现QIODevice.bytesToWrite( ) 。
返回正在等待被写入的字节数。该字节被写入时,控制返回到事件循环或当flush()被调用。
See also bytesAvailable()和flush( ) 。
bool QAbstractSocket.canReadLine (self)
从重新实现QIODevice.canReadLine( ) 。
返回True如果一行数据可以从套接字读取,否则返回False 。
See also readLine( ) 。
QAbstractSocket.close (self)
从重新实现QIODevice.close( ) 。
关闭套接字的I / O设备,断开与主机插座的连接,关闭套接字,并重置姓名,地址,端口号和底层套接字描述符。
See QIODevice.close( ),用于当一个I / O设备被关闭时发生的动作的说明。
See also abort( ) 。
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( ) 。
QAbstractSocket.connectToHost (self, QHostAddress address, int port, QIODevice.OpenMode mode = QIODevice.ReadWrite)
这是一个重载函数。
企图使一个连接address端口port。
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中引入。
QAbstractSocket.disconnectFromHost (self)
试图关闭套接字。如果有挂起的数据等待写入,QAbstractSocket将进入ClosingState并等待,直到所有数据已经写入。最终,将进入UnconnectedState和发射disconnected()信号。
See also connectToHost( ) 。
QAbstractSocket.disconnectFromHostImplementation (self)
这种方法也是一个Qt槽与C + +的签名void disconnectFromHostImplementation()
。
包含的实施disconnectFromHost( ) 。
这个函数是Qt 4.1中引入。
SocketError QAbstractSocket.error (self)
[
返回上次发生错误的类型。
]($docs-qabstractsocket.html#SocketError-enum)
See also state()和errorString( ) 。
bool QAbstractSocket.flush (self)
该函数将尽可能从内部写缓冲区的底层网络接口,而不会阻塞。如果任何数据被写入时,该函数将返回True,否则返回False。
调用此函数,如果你需要QAbstractSocket立即开始发送缓冲数据。成功写入的字节数依赖于操作系统。在大多数情况下,你不需要调用这个函数,因为QAbstractSocket将自动开始发送数据,一旦控制返回到事件循环。在不存在的事件循环,调用waitForBytesWritten( )来代替。
See also write()和waitForBytesWritten( ) 。
bool QAbstractSocket.isSequential (self)
从重新实现QIODevice.isSequential( ) 。
bool QAbstractSocket.isValid (self)
返回True如果套接字是有效的,并准备使用,否则返回False 。
Note:套接字的状态必须ConnectedState阅读和写作之前可能发生。
See also state( ) 。
QHostAddress QAbstractSocket.localAddress (self)
返回本地套接字如果可用的主机地址,否则返回QHostAddress.Null。
这通常是在主机的主IP地址,但也可以是QHostAddress.LocalHost( 127.0.0.1)来连接到本地主机。
See also localPort( )peerAddress()和setLocalAddress( ) 。
int QAbstractSocket.localPort (self)
返回本地套接字如果可用的主机端口号(本地字节顺序) ,否则返回0 。
See also localAddress( )peerPort()和setLocalPort( ) 。
QHostAddress QAbstractSocket.peerAddress (self)
返回所连接的对端的地址,如果套接字是在ConnectedState否则返回QHostAddress.Null。
See also peerName( )peerPort( )localAddress()和setPeerAddress( ) 。
QString QAbstractSocket.peerName (self)
所指定的返回对端的名称connectToHost( ) ,或空QString如果connectToHost( )尚未被调用。
See also peerAddress( )peerPort()和setPeerName( ) 。
int QAbstractSocket.peerPort (self)
返回所连接的对端的端口,如果套接字是在ConnectedState否则返回0 。
See also peerAddress( )localPort()和setPeerPort( ) 。
QNetworkProxy QAbstractSocket.proxy (self)
返回此套接字的网络代理。默认情况下,QNetworkProxy.DefaultProxy被使用,这意味着该套接字将查询应用程序的默认代理设置。
这个函数是Qt 4.1中引入。
See also setProxy( )QNetworkProxy和QNetworkProxyFactory。
int QAbstractSocket.readBufferSize (self)
返回内部读缓冲区的大小。这限制了数据的客户端可以在打电话之前收取的金额read()或readAll( ) 。
0读缓冲区的大小(默认值)意味着缓冲区有没有大小限制,以确保数据不会丢失。
See also setReadBufferSize()和read( ) 。
str QAbstractSocket.readData (self, int maxlen)
从重新实现QIODevice.readData( ) 。
str QAbstractSocket.readLineData (self, int maxlen)
从重新实现QIODevice.readLineData( ) 。
QAbstractSocket.setLocalAddress (self, QHostAddress address)
设置到一个连接的本地端的地址address。
您可以在子类中调用这个函数QAbstractSocket改变的返回值localAddress连接后()函数已经建立。此功能是常用的代理服务器连接虚拟连接设置。
请注意,此功能对套接字的本地地址的连接(例如,之前没有绑定,QUdpSocket.bind())。
这个函数是Qt 4.1中引入。
See also localAddress( )setLocalPort()和setPeerAddress( ) 。
QAbstractSocket.setLocalPort (self, int port)
设置端口上连接的本地端port。
您可以在子类中调用这个函数QAbstractSocket改变的返回值localPort连接后()函数已经建立。此功能是常用的代理服务器连接虚拟连接设置。
请注意,这个函数不套接字的本地端口绑定的连接(如前,QUdpSocket.bind())。
这个函数是Qt 4.1中引入。
See also localPort( )localAddress( )setLocalAddress()和setPeerPort( ) 。
QAbstractSocket.setPeerAddress (self, QHostAddress address)
设置连接到的远程端的地址address。
您可以在子类中调用这个函数QAbstractSocket改变的返回值peerAddress连接后()函数已经建立。此功能是常用的代理服务器连接虚拟连接设置。
这个函数是Qt 4.1中引入。
See also peerAddress( )setPeerPort()和setLocalAddress( ) 。
QAbstractSocket.setPeerName (self, QString name)
设置远端的主机名name。
您可以在子类中调用这个函数QAbstractSocket改变的返回值peerName连接后()函数已经建立。此功能是常用的代理服务器连接虚拟连接设置。
这个函数是Qt 4.1中引入。
See also peerName( ) 。
QAbstractSocket.setPeerPort (self, int port)
设置连接到的远程端的端口port。
您可以在子类中调用这个函数QAbstractSocket改变的返回值peerPort连接后()函数已经建立。此功能是常用的代理服务器连接虚拟连接设置。
这个函数是Qt 4.1中引入。
See also peerPort( )setPeerAddress()和setLocalPort( ) 。
QAbstractSocket.setProxy (self, QNetworkProxy networkProxy)
设置此套接字明确网络代理networkProxy。
要禁用使用代理的这个插座,使用QNetworkProxy.NoProxy代理类型:
socket->setProxy([QNetworkProxy]($docs-qnetworkproxy.html).NoProxy);
对于代理的默认值是QNetworkProxy.DefaultProxy,这意味着套接字将使用应用程序设置:如果将代理设置QNetworkProxy.setApplicationProxy ,它将使用,否则,如果一个工厂设置QNetworkProxyFactory.setApplicationProxyFactory ,它会查询该工厂类型QNetworkProxyQuery.TcpSocket。
这个函数是Qt 4.1中引入。
See also proxy( )QNetworkProxy和QNetworkProxyFactory.queryProxy( ) 。
QAbstractSocket.setReadBufferSize (self, int size)
载的大小QAbstractSocket的内部读缓冲区是size字节。
如果缓冲区大小被限制为一定的大小,QAbstractSocket将不缓存数据超过此大小。特殊情况下,为0的缓冲区大小意味着读缓存器是无限的,所有输入的数据进行缓冲。这是默认的。
此选项很有用,如果你只在读取特定时间点的数据(例如,在实时流应用程序),或者如果你想保护你的插座对接收的数据过多,最终可能导致应用程序用完内存。
只QTcpSocket uses QAbstractSocket的内部缓冲区;QUdpSocket不使用任何缓冲在所有的,而是依赖于由操作系统提供的隐式缓冲。正因为如此,调用这个函数上QUdpSocket没有任何影响。
See also readBufferSize()和read( ) 。
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( ) 。
QAbstractSocket.setSocketError (self, SocketError socketError)
设置最后对发生错误的类型socketError。
See also setSocketState()和setErrorString( ) 。
QAbstractSocket.setSocketOption (self, SocketOption option, QVariant value)
设置给定option由所描述的值value。
此功能被引入Qt的4.6 。
See also socketOption( ) 。
QAbstractSocket.setSocketState (self, SocketState state)
设置套接字的状态,以state。
See also state( ) 。
int QAbstractSocket.socketDescriptor (self)
返回的本地套接字描述符QAbstractSocket如果对象是可用的,否则返回-1 。
如果套接字使用QNetworkProxy,返回的描述符可能无法与原生socket函数使用。
套接字描述符时,无法使用QAbstractSocket在UnconnectedState。
See also setSocketDescriptor( ) 。
QVariant QAbstractSocket.socketOption (self, SocketOption option)
返回的值option选项。
此功能被引入Qt的4.6 。
See also setSocketOption( ) 。
SocketType QAbstractSocket.socketType (self)
[
返回套接字的类型( TCP,UDP或其他) 。
]($docs-qabstractsocket.html#SocketType-enum)
See also QTcpSocket和QUdpSocket。
SocketState QAbstractSocket.state (self)
[
返回套接字的状态。
]($docs-qabstractsocket.html#SocketState-enum)
bool QAbstractSocket.waitForBytesWritten (self, int msecs = 30000)
从重新实现QIODevice.waitForBytesWritten( ) 。
bool QAbstractSocket.waitForConnected (self, int msecs = 30000)
等待,直到套接字连接,高达msecs毫秒。如果连接已经建立,该函数将返回True,否则返回False 。当它返回False的情况下,你可以调用error()来确定错误的原因。
下面的例子最多等待1秒,以建立连接:
socket->connectToHost("imap", 143);
if (socket->waitForConnected(1000))
qDebug("Connected!");
如果毫秒为-1 ,此功能将不会超时。
Note:此功能可能稍长比等待msecs取决于所花费的时间来完成主机查找。
Note:多次调用该函数不累积的时间。如果函数超时,连接过程将被中止。
See also connectToHost()和connected( ) 。
bool QAbstractSocket.waitForDisconnected (self, int msecs = 30000)
等待,直到插座断开连接,直至msecs毫秒。如果连接已经断开,则该函数返回True,否则返回False 。当它返回False的情况下,你可以调用error()来确定错误的原因。
下面的例子最多等待一秒钟的连接被关闭:
socket->disconnectFromHost();
if (socket->state() == [QAbstractSocket]($docs-qabstractsocket.html).UnconnectedState ||
socket->waitForDisconnected(1000))
qDebug("Disconnected!");
如果毫秒为-1 ,此功能将不会超时。
See also disconnectFromHost()和close( ) 。
bool QAbstractSocket.waitForReadyRead (self, int msecs = 30000)
从重新实现QIODevice.waitForReadyRead( ) 。
此功能块,直到新的数据可供读取和readyRead()信号已经发出。之后,该函数将超时msecs毫秒,默认的超时时间为30000毫秒。
该函数返回True,如果readyRead( )信号被发射,并有可供读取新数据,否则返回False (如果发生错误或者操作超时) 。
See also waitForBytesWritten( ) 。
int QAbstractSocket.writeData (self, str data)
从重新实现QIODevice.writeData( ) 。
Qt Signal Documentation
void connected ()
这是该信号的默认超载。
之后此信号被发射connectToHost( )被调用,并连接已成功建立。
Note:在一些操作系统上的连接()信号可以直接从所发射的connectToHost( )调用来连接到本地主机。
See also connectToHost()和disconnected( ) 。
void disconnected ()
这是该信号的默认超载。
当插座已断开这个信号被发射。
Warning:如果您需要删除sender在连接到它的插槽这个信号的( ) ,请使用deleteLater()功能。
See also connectToHost( )disconnectFromHost()和abort( ) 。
void error (QAbstractSocket::SocketError)
这是该信号的默认超载。
这个信号被发射时发生错误之后。该socketError参数描述发生错误的类型。
QAbstractSocket.SocketError是不是注册的元类型,所以排队的连接,你将不得不用它注册Q_DECLARE_METATYPE()和qRegisterMetaType( ) 。
See also error( )errorString()和Creating Custom Qt Types。
void hostFound ()
这是该信号的默认超载。
之后此信号被发射connectToHost( )被调用并且主机查找成功。
Note:由于Qt的4.6.3QAbstractSocket可以从发射hostFound ()直接connectToHost( )调用,因为一个DNS结果可能已经被缓存。
See also connected( ) 。
void proxyAuthenticationRequired (const QNetworkProxy&,QAuthenticator *)
这是该信号的默认超载。
这个信号可以被发射时,一proxy需要进行身份验证时使用。该authenticator对象可以被填充在与必需的细节,以便验证和持续的连接。
Note:这是不可能使用QueuedConnection连接到该信号,就好像所述认证没有被填充了新的信息时,该信号返回的连接失败。
此功能被引入Qt的4.3 。
See also QAuthenticator和QNetworkProxy。
void stateChanged (QAbstractSocket::SocketState)
这是该信号的默认超载。
这个信号被发射时QAbstractSocket的状态变化。该socketState参数是新的状态。
QAbstractSocket.SocketState是不是注册的元类型,所以排队的连接,你将不得不与Q_REGISTER_METATYPE (注册它)和qRegisterMetaType( ) 。
See also state()和Creating Custom Qt Types。