QLocalSocket Class Reference

[QtNetwork module]

该QLocalSocket类提供了一个本地套接字。More…

继承QIODevice

Types

  • enum LocalSocketError { ConnectionRefusedError, PeerClosedError, ServerNotFoundError, SocketAccessError, ..., UnknownSocketError }
  • enum LocalSocketState { UnconnectedState, ConnectingState, ConnectedState, ClosingState }

Methods

  • __init__ (self, QObject parent = None)
  • abort (self)
  • int bytesAvailable (self)
  • int bytesToWrite (self)
  • bool canReadLine (self)
  • close (self)
  • connectToServer (self, QString name, QIODevice.OpenMode mode = QIODevice.ReadWrite)
  • disconnectFromServer (self)
  • LocalSocketError error (self)
  • bool flush (self)
  • QString fullServerName (self)
  • bool isSequential (self)
  • bool isValid (self)
  • int readBufferSize (self)
  • str readData (self, int maxlen)
  • QString serverName (self)
  • setReadBufferSize (self, int size)
  • bool setSocketDescriptor (self, sip.voidptr socketDescriptor, LocalSocketState state = QLocalSocket.ConnectedState, QIODevice.OpenMode mode = QIODevice.ReadWrite)
  • sip.voidptr socketDescriptor (self)
  • LocalSocketState 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)

Qt Signals

  • void connected ()
  • void disconnected ()
  • void error (QLocalSocket::LocalSocketError)
  • void stateChanged (QLocalSocket::LocalSocketState)

Detailed Description

该QLocalSocket类提供了一个本地套接字。

在Windows上,这是一个命名管道,并在Unix上,这是一个本地的域套接字。

如果发生错误, socketError ()返回的错误的类型,并且errorString( )可以被调用来获取发生了什么可读的描述。

虽然QLocalSocket是专为一个事件循环使用,它可以使用它没有之一。在这种情况下,您必须使用waitForConnected( )waitForReadyRead( )waitForBytesWritten()和waitForDisconnected(),它会阻塞,直到操作完成或超时期满。

请注意,此功能不支持的Windows版本早于Windows XP 。


Type Documentation

  1. QLocalSocket.LocalSocketError

该LocalServerError枚举表示可能发生的错误。可以通过调用来检索最新的错误QLocalSocket.error( ) 。

Constant Value Description
QLocalSocket.ConnectionRefusedError QAbstractSocket.ConnectionRefusedError 连接被对等(或超时)拒绝。
QLocalSocket.PeerClosedError QAbstractSocket.RemoteHostClosedError 远程套接字关闭了连接。请注意,客户端套接字(也就是该套接字)远程关闭通知发出后将会关闭。
QLocalSocket.ServerNotFoundError QAbstractSocket.HostNotFoundError 本地套接字名未找到。
QLocalSocket.SocketAccessError QAbstractSocket.SocketAccessError 套接字操作失败,因为该应用程序缺乏必要的特权。
QLocalSocket.SocketResourceError QAbstractSocket.SocketResourceError 本地系统跑出来的资源(例如,太多的套接字)的。
QLocalSocket.SocketTimeoutError QAbstractSocket.SocketTimeoutError 套接字操作超时。
QLocalSocket.DatagramTooLargeError QAbstractSocket.DatagramTooLargeError 数据报比操作系统的限制(其可以是低至8192字节)大。
QLocalSocket.ConnectionError QAbstractSocket.NetworkError 与连接时出错。
QLocalSocket.UnsupportedSocketOperationError QAbstractSocket.UnsupportedSocketOperationError 不是由本地操作系统支持请求的套接字操作。
QLocalSocket.UnknownSocketError QAbstractSocket.UnknownSocketError 发生不明的错误。
  1. QLocalSocket.LocalSocketState

这个枚举变量描述了不同的状态,其中一个插座即可。

Constant Value Description
QLocalSocket.UnconnectedState QAbstractSocket.UnconnectedState 该套接字没有连接。
QLocalSocket.ConnectingState QAbstractSocket.ConnectingState 插座已经开始建立连接。
QLocalSocket.ConnectedState QAbstractSocket.ConnectedState 连接建立。
QLocalSocket.ClosingState QAbstractSocket.ClosingState 该插座是即将关闭(数据仍可能等待写入) 。

See also QLocalSocket.state( ) 。


Method Documentation

  1. QLocalSocket.__init__ (self, QObject parent = None)

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

创建一个新的本地套接字。该parent参数被传递给QObject的构造。

  1. QLocalSocket.abort (self)

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

See also disconnectFromServer()和close( ) 。

  1. int QLocalSocket.bytesAvailable (self)

从重新实现QIODevice.bytesAvailable( ) 。

  1. int QLocalSocket.bytesToWrite (self)

从重新实现QIODevice.bytesToWrite( ) 。

  1. bool QLocalSocket.canReadLine (self)

从重新实现QIODevice.canReadLine( ) 。

  1. QLocalSocket.close (self)

从重新实现QIODevice.close( ) 。

  1. QLocalSocket.connectToServer (self, QString name, QIODevice.OpenMode mode = QIODevice.ReadWrite)

企图使一个连接name

该插座是在给定的开openMode并首次进入ConnectingState。然后,它尝试连接到由查询返回的地址或地址。最后,如果建立了连接,QLocalSocket进入ConnectedState并发出connected( ) 。

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

另请参阅state( )serverName()和waitForConnected( ) 。

  1. QLocalSocket.disconnectFromServer (self)

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

See also connectToServer( ) 。

  1. LocalSocketError QLocalSocket.error (self)

[

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

]($docs-qlocalsocket.html#LocalSocketError-enum)

See also state()和errorString( ) 。

  1. bool QLocalSocket.flush (self)

该函数将尽可能地从内部写缓冲区到插座,而不会阻塞。如果任何数据被写入时,该函数将返回True,否则返回False。

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

See also write()和waitForBytesWritten( ) 。

  1. QString QLocalSocket.fullServerName (self)

返回该套接字被连接到服务器的路径。

Note:这个函数的返回值是特定于平台的。

See also connectToServer()和serverName( ) 。

  1. bool QLocalSocket.isSequential (self)

从重新实现QIODevice.isSequential( ) 。

  1. bool QLocalSocket.isValid (self)

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

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

See also state()和connectToServer( ) 。

  1. int QLocalSocket.readBufferSize (self)

返回内部读缓冲区的大小。这限制了数据的客户端可以在打电话之前收取的金额read()或readAll( ) 。 0读缓冲区的大小(默认值)意味着缓冲区有没有大小限制,以确保数据不会丢失。

See also setReadBufferSize()和read( ) 。

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

从重新实现QIODevice.readData( ) 。

  1. QString QLocalSocket.serverName (self)

所指定的返回对端的名称connectToServer( ) ,或空QString如果connectToServer( )没有被调用或者它失败了。

See also connectToServer()和fullServerName( ) 。

  1. QLocalSocket.setReadBufferSize (self, int size)

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

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

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

See also readBufferSize()和read( ) 。

  1. bool QLocalSocket.setSocketDescriptor (self, sip.voidptr socketDescriptor, LocalSocketState state = QLocalSocket.ConnectedState, QIODevice.OpenMode mode = QIODevice.ReadWrite)

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

Note:这是不可能的初始化两个本地套接字使用相同的本地套接字描述符。

See also socketDescriptor( )state()和openMode( ) 。

  1. sip.voidptr QLocalSocket.socketDescriptor (self)

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

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

See also setSocketDescriptor( ) 。

  1. LocalSocketState QLocalSocket.state (self)

[

返回套接字的状态。

]($docs-qlocalsocket.html#LocalSocketState-enum)

See also error( ) 。

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

从重新实现QIODevice.waitForBytesWritten( ) 。

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

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

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

  1. socket->connectToServer("market");
  2. if (socket->waitForConnected(1000))
  3. qDebug("Connected!");

If msecs为-1 ,此功能将不会超时。

See also connectToServer()和connected( ) 。

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

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

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

  1. socket->disconnectFromServer();
  2. if (socket->waitForDisconnected(1000))
  3. qDebug("Disconnected!");

If msecs为-1 ,此功能将不会超时。

See also disconnectFromServer()和close( ) 。

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

从重新实现QIODevice.waitForReadyRead( ) 。

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

如果数据可供读取该函数返回True ,否则返回False (如果发生错误或者操作超时) 。

See also waitForBytesWritten( ) 。

  1. int QLocalSocket.writeData (self, str)

从重新实现QIODevice.writeData( ) 。


Qt Signal Documentation

  1. void connected ()

这是该信号的默认超载。

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

See also connectToServer()和disconnected( ) 。

  1. void disconnected ()

这是该信号的默认超载。

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

See also connectToServer( )disconnectFromServer( )abort()和connected( ) 。

  1. void error (QLocalSocket::LocalSocketError)

这是该信号的默认超载。

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

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

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

  1. void stateChanged (QLocalSocket::LocalSocketState)

这是该信号的默认超载。

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

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

See also state()和Creating Custom Qt Types