class QLocalSocket#

QLocalSocket 类提供了本地套接字。 更多

Inheritance diagram of PySide6.QtNetwork.QLocalSocket

概述#

属性#

方法#

信号#

状态已改变

注意

详细描述#

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

如果发生错误,error() 返回错误类型,并可以通过调用 error() 获取一个关于所发生情况的人读描述。

尽管 QLocalSocket 为使用事件循环而设计,但也可以不使用它。在这种情况下,您必须使用 waitForConnected()waitForReadyRead()waitForBytesWritten()waitForDisconnected() ,这些函数会阻塞直到操作完成或超时。

另请参阅

QLocalServer

class LocalSocketError#

LocalServerError枚举表示可能发生的错误。可以通过调用 error() 来获取最近错误。

常数

描述

QLocalSocket.ConnectionRefusedError

连接被对方拒绝(或超时)。

QLocalSocket.PeerClosedError

远程套接字关闭了连接。注意,客户端套接字(即,本套接字)将在发送远程关闭通知后关闭。

QLocalSocket.ServerNotFoundError

本地套接字名称未找到。

QLocalSocket.SocketAccessError

由于应用程序缺乏必要的权限而导致套接字操作失败。

QLocalSocket.SocketResourceError

本地系统耗尽了资源(例如,套接字太多)。

QLocalSocket.SocketTimeoutError

套接字操作超时。

QLocalSocket.DatagramTooLargeError

数据报比操作系统的限制大(可能低至8192字节)。

QLocalSocket.ConnectionError

连接操作发生错误。

QLocalSocket.UnsupportedSocketOperationError

请求的套接字操作不受本地操作系统支持。

QLocalSocket.OperationError

在套接字处于不允许该操作的状态时尝试了一个操作。

QLocalSocket.UnknownSocketError

发生了未识别的错误。

class LocalSocketState#

该枚举描述了套接字可能处于的不同状态。

常数

描述

QLocalSocket.UnconnectedState

套接字未连接。

QLocalSocket.ConnectingState

套接字已经开始建立连接。

QLocalSocket.ConnectedState

连接已经建立。

QLocalSocket.ClosingState

套接字即将关闭(可能仍有数据等待写入)。

另请参阅

state()

class SocketOption#

(从 enum.Flag 继承) 该枚举描述了连接到服务器时可能使用的选项。当前,在 Linux 和 Android 上用于指定连接到监听绑定到抽象地址的套接字的客户端。

常数

描述

QLocalSocket.NoOptions

未设置选项。

QLocalSocket.AbstractNamespaceOption

套接字将尝试连接到抽象地址。此标志仅适用于 Linux 和 Android。在其他平台上将被忽略。

另请参阅

socketOptions

状态已改变

当使用 from __feature__ import true_property 时,可以直接使用属性,否则通过访问函数。

property socketOptionsᅟ: Combination of QLocalServer.SocketOption#

该属性保存了套接字选项。

选项必须在套接字处于 UnconnectedState 状态时设置。

另请参阅

connectToServer()

访问函数
__init__([parent=None])#
参数:

parentQObject

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

abort()#

终止当前连接并重置套接字。与 disconnectFromServer() 不同,此函数立即关闭套接字,清除写缓冲区中的任何挂起数据。

另请参阅

disconnectFromServer() close()

connectToServer([openMode=QIODeviceBase.OpenModeFlag.ReadWrite])#
参数:

openMode – 组合 OpenModeFlag

尝试连接到 serverName() 。在打开连接之前必须调用 setServerName()。或者您可以使用 connectToServer(const QString &name, OpenMode openMode);

套接字将以给定的 openMode 打开,并首先进入 ConnectingState 状态。如果建立了连接,QLocalSocket 将进入 ConnectedState 并发出 connected()

调用此函数后,套接字可以发出 errorOccurred() 以指示发生了错误。

connectToServer(name[, openMode=QIODeviceBase.OpenModeFlag.ReadWrite])
参数:

这是一个重载函数。

设置服务器 name 并尝试与其建立连接。

套接字将以给定的 openMode 打开,并首先进入 ConnectingState 状态。如果建立了连接,QLocalSocket 将进入 ConnectedState 并发出 connected()

调用此函数后,套接字可以发出 errorOccurred() 以指示发生了错误。

connected()#

在调用 connectToServer() 并成功建立连接后发出此信号。

disconnectFromServer()#

尝试关闭套接字。如果有等待写入的数据,QLocalSocket 将进入 ClosingState 状态并等待所有数据写入完成。最终,它将进入 UnconnectedState 状态并发出 disconnected() 信号。

另请参阅

connectToServer()

disconnected()#

该信号在套接字断开连接时发出。

error()#
返回类型:

LocalSocketError

返回最后发生的错误类型。

另请参阅

state() errorString()

errorOccurred(socketError)#
参数:

socketErrorLocalSocketError

当一个错误发生时,会发出此信号。参数 socketError 描述了发生的错误类型。

LocalSocketError 不是一个已注册的元类型,因此对于已排队的连接,您必须使用 Q_DECLARE_METATYPE() 和 qRegisterMetaType() 进行注册。

另请参阅

error() errorString()Creating Custom Qt Types

flush()#
返回类型:

bool

该函数尽可能地将内部写入缓冲区的数据写入套接字,不进行阻塞。如果写入数据了,则该函数返回 true;否则返回 false。

如果需要立即开始发送缓冲数据,请调用此函数QLocalSocket。成功写入的字节数取决于操作系统。在大多数情况下,您不需要调用此函数,因为QLocalSocket会在控制返回到事件循环时自动开始发送数据。如果没有事件循环,请调用waitForBytesWritten()代替。

另请参阅

waitForBytesWritten()

fullServerName()#
返回类型:

str

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

状态已改变

此函数的返回值是特定于平台的。

isValid()#
返回类型:

bool

如果套接字有效且准备好使用,则返回 true;否则返回 false

状态已改变

在读取和写入之前,套接字的状态必须是ConnectedState

另请参阅

state() connectToServer()

readBufferSize()#
返回类型:

int

返回内部读取缓冲区的大小。这限制在您调用 read() 或 readAll() 之前客户端可以接收的数据量。读取缓冲区大小为 0(默认值)表示缓冲区没有大小限制,确保不会丢失数据。

serverName()#
返回类型:

str

返回通过 setServerName() 方法指定的对等端名称,如果没有调用 setServerName()connectToServer() 失败,则返回空 QString。

setReadBufferSize(size)#
参数:

size – int

QLocalSocket 的内部读取缓冲区大小设置为 size 字节。

如果缓冲区大小限制为一定大小,则 QLocalSocket 不会缓冲超过此大小的数据。例外情况下,缓冲区大小为0表示读取缓冲区是无限的,所有传入数据都将被缓冲。这是默认值。

如果仅在特定时间点读取数据(例如,在实时流应用程序中)或希望保护套接字免收过多数据,可能最终导致您的应用程序耗尽内存,则此选项非常有用。

另请参阅

readBufferSize() read()

setServerName(name)#
参数:

name – 字符串

设置要连接的对等端名称。在 Windows 上,名称是指定管道的名称;在 Unix 上,名称是本地域套接字的名称。

必须在套接字未连接时调用此函数。

另请参阅

serverName()

setSocketDescriptor(socketDescriptor[, socketState=QLocalSocket.LocalSocketState.ConnectedState[, openMode=QIODeviceBase.OpenModeFlag.ReadWrite]])#
参数:
返回类型:

bool

使用本地套接字描述符 socketDescriptor 初始化 QLocalSocket。如果 socketDescriptor 被接受为一个有效的套接字描述符,则返回 true;否则返回 false。套接字以 openMode 指定的模式打开,并进入由 socketState 指定的套接字状态。

状态已改变

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

setSocketOptions(option)#
参数:

optionSocketOption 的组合

另请参阅

socketOptions()

socketDescriptor()#
返回类型:

qintptr

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

QLocalSocket 处于 UnconnectedState 状态时,套接字描述符不可用。描述符的类型根据平台而定。

  • 在 Windows 上,返回的值是 Winsock 2 套接字句柄。

  • 在 INTEGRITY 上,返回的值是 QTcpSocket 套接字描述符,类型由 socketDescriptor 定义。

  • 在所有其他类 UNIX 操作系统上,类型是一个表示套接字的文件描述符。

另请参阅

setSocketDescriptor()

socketOptions()#
返回类型:

SocketOption 的组合

另请参阅

setSocketOptions()

state()#
返回类型:

LocalSocketState

返回套接字的状态。

另请参阅

error()

stateChanged(socketState)#
参数:

socketStateLocalSocketState

QLocalSocket 的状态改变时,会发出此信号。参数socketState是新的状态。

由于QLocalSocket::SocketState不是一个已注册的元类型,因此对于排队的连接,您必须使用Q_DECLARE_METATYPE()和qRegisterMetaType()注册它。

另请参阅

state() Creating Custom Qt Types

waitForConnected([msecs=30000])#
参数:

msecs – int

返回类型:

bool

注意

本节包含从C++自动翻译到Python的片段,可能包含错误。

等待套接字连接,最长为msecs毫秒。如果已建立连接,则此函数返回true;否则返回false。如果返回false,可以调用error()以确定错误原因。

以下示例等待最多一秒钟建立一个连接

socket.connectToServer("market")
if socket.waitForConnected(1000):
    qDebug("Connected!")

如果msecs为-1,则此函数不会超时。

waitForDisconnected([msecs=30000])#
参数:

msecs – int

返回类型:

bool

注意

本节包含从C++自动翻译到Python的片段,可能包含错误。

等待套接字断开连接,最长为msecs毫秒。如果连接成功断开,此函数返回true;否则返回false(如果操作超时、发生错误或QLocalSocket 已断开)。如果返回false,可以调用error()以确定错误原因。

以下示例等待最多一秒钟关闭连接

socket.disconnectFromServer()
if (socket.state() == QLocalSocket.UnconnectedState
    or socket.waitForDisconnected(1000)) {
    qDebug("Disconnected!")

如果msecs为-1,则此函数不会超时。

另请参阅

disconnectFromServer() close()