PySide6.QtNetwork.QLocalSocket

class QLocalSocket

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

PySide6.QtNetwork.QLocalSocket 的继承图

概要

属性

方法

信号

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

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

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

尽管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()

Access functions:
__init__([parent=None])
Parameters:

父对象QObject

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

abort()

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

另请参阅

disconnectFromServer() close()

connectToServer([openMode=QIODeviceBase.OpenModeFlag.ReadWrite])
Parameters:

openModeOpenModeFlag 的组合

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

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

调用此函数后,socket可以发出errorOccurred()来表示发生了错误。

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

这是一个重载函数。

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

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

调用此函数后,socket可以发出errorOccurred()来表示发生了错误。

connected()

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

disconnectFromServer()

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

另请参阅

connectToServer()

disconnected()

当套接字断开连接时,会发出此信号。

error()
Return type:

LocalSocketError

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

另请参阅

state() errorString()

errorOccurred(socketError)
Parameters:

socketErrorLocalSocketError

此信号在发生错误后发出。socketError 参数描述了发生的错误类型。

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

另请参阅

error() errorString()创建 自定义 Qt 类型

flush()
Return type:

布尔

此函数尽可能多地从内部写缓冲区写入到套接字,而不会阻塞。如果写入了任何数据,此函数返回true;否则返回false。

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

另请参阅

waitForBytesWritten()

fullServerName()
Return type:

字符串

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

注意

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

isValid()
Return type:

布尔

如果套接字有效且可以使用,则返回 true;否则返回 false

注意

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

另请参阅

state() connectToServer()

readBufferSize()
Return type:

整数

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

serverName()
Return type:

字符串

返回由setServerName()指定的对等方名称,如果setServerName()未被调用或connectToServer()失败,则返回一个空的QString。

setReadBufferSize(size)
Parameters:

size – int

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

如果缓冲区大小限制为某个特定大小,QLocalSocket 将不会缓冲超过这个大小的数据。例外情况下,缓冲区大小为0意味着读取缓冲区是无限的,所有传入的数据都会被缓冲。这是默认设置。

如果您只在特定时间点读取数据(例如,在实时流应用程序中),或者如果您想保护您的套接字免受接收过多数据的影响,这可能会导致您的应用程序内存不足,此选项非常有用。

另请参阅

readBufferSize() read()

setServerName(name)
Parameters:

name – str

设置要连接的name。在Windows上,name是命名管道的名称;在Unix上,name是本地域套接字的名称。

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

另请参阅

serverName()

setSocketDescriptor(socketDescriptor[, socketState=QLocalSocket.LocalSocketState.ConnectedState[, openMode=QIODeviceBase.OpenModeFlag.ReadWrite]])
Parameters:
Return type:

布尔

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

注意

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

setSocketOptions(option)
Parameters:

optionSocketOption 的组合

另请参阅

socketOptions()

socketDescriptor()
Return type:

qintptr

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

QLocalSocket处于UnconnectedState时,套接字描述符不可用。描述符的类型取决于平台:

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

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

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

另请参阅

setSocketDescriptor()

socketOptions()
Return type:

SocketOption的组合

另请参阅

setSocketOptions()

state()
Return type:

LocalSocketState

返回套接字的状态。

另请参阅

error()

stateChanged(socketState)
Parameters:

socketStateLocalSocketState

每当QLocalSocket的状态发生变化时,都会发出此信号。socketState参数是新状态。

QLocalSocket::SocketState 不是一个已注册的元类型,因此对于队列连接,您需要使用 Q_DECLARE_METATYPE() 和 qRegisterMetaType() 进行注册。

另请参阅

state() 创建 自定义 Qt 类型

waitForConnected([msecs=30000])
Parameters:

msecs – 整数

Return type:

布尔

警告

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

等待直到套接字连接,最多等待msecs毫秒。如果连接已建立,此函数返回true;否则返回false。在返回false的情况下,您可以调用error()来确定错误的原因。

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

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

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

waitForDisconnected([msecs=30000])
Parameters:

msecs – 整数

Return type:

布尔

警告

本节包含从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()