PySide6.QtNetwork.QLocalSocket¶
- class QLocalSocket¶
QLocalSocket类提供了一个本地套接字。更多…概要¶
属性¶
socketOptionsᅟ- 套接字选项
方法¶
def
__init__()def
abort()def
error()def
flush()def
fullServerName()def
isValid()def
readBufferSize()def
serverName()def
setServerName()def
socketOptions()def
state()
信号¶
def
connected()def
disconnected()def
errorOccurred()def
stateChanged()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
在Windows上,这是一个命名管道,在Unix上,这是一个本地域套接字。
如果发生错误,
error()返回错误的类型,并且可以调用 errorString() 来获取人类可读的错误描述。尽管
QLocalSocket设计用于与事件循环一起使用,但也可以在没有事件循环的情况下使用它。在这种情况下,您必须使用waitForConnected()、waitForReadyRead()、waitForBytesWritten()和waitForDisconnected(),这些函数会阻塞直到操作完成或超时。另请参阅
- 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
套接字即将关闭(可能仍有数据等待写入)。
另请参阅
- class SocketOption¶
(继承自
enum.Flag) 此枚举描述了可用于连接到服务器的可能选项。目前,在 Linux 和 Android 上,它用于指定连接到监听绑定到抽象地址的套接字的服务器。常量
描述
QLocalSocket.NoOptions
未设置任何选项。
QLocalSocket.AbstractNamespaceOption
套接字将尝试连接到一个抽象地址。此标志特定于Linux和Android。在其他平台上将被忽略。
另请参阅
注意
当使用
from __feature__ import true_property时,属性可以直接使用,否则通过访问器函数使用。- property socketOptionsᅟ: Combination of QLocalServer.SocketOption¶
此属性保存套接字选项。
选项必须在套接字处于
UnconnectedState状态时设置。另请参阅
- Access functions:
创建一个新的本地套接字。
parent参数传递给QObject的构造函数。- abort()¶
中止当前连接并重置套接字。与
disconnectFromServer()不同,此函数立即关闭套接字,清除写缓冲区中的任何待处理数据。另请参阅
disconnectFromServer()close()- connectToServer([openMode=QIODeviceBase.OpenModeFlag.ReadWrite])¶
- Parameters:
openMode –
OpenModeFlag的组合
尝试连接到
serverName()。在打开连接之前必须调用setServerName()。或者,您可以使用connectToServer(const QString &name, OpenMode openMode);套接字在给定的
openMode中打开,并首先进入ConnectingState。如果连接建立,QLocalSocket进入ConnectedState并发出connected()。调用此函数后,socket可以发出
errorOccurred()来表示发生了错误。- connectToServer(name[, openMode=QIODeviceBase.OpenModeFlag.ReadWrite])
- Parameters:
name – str
openMode –
OpenModeFlag的组合
这是一个重载函数。
设置服务器
name并尝试与其建立连接。套接字在给定的
openMode中打开,并首先进入ConnectingState。如果连接建立,QLocalSocket进入ConnectedState并发出connected()。调用此函数后,socket可以发出
errorOccurred()来表示发生了错误。- connected()¶
在调用
connectToServer()并成功建立连接后,会发出此信号。- disconnectFromServer()¶
尝试关闭套接字。如果有待写入的数据,
QLocalSocket将进入ClosingState并等待所有数据写入完成。最终,它将进入UnconnectedState并发出disconnected()信号。另请参阅
- disconnected()¶
当套接字断开连接时,会发出此信号。
- error()¶
- Return type:
返回上次发生的错误类型。
另请参阅
- errorOccurred(socketError)¶
- Parameters:
socketError –
LocalSocketError
此信号在发生错误后发出。
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。- readBufferSize()¶
- Return type:
整数
返回内部读取缓冲区的大小。这限制了客户端在调用read()或readAll()之前可以接收的数据量。读取缓冲区大小为0(默认值)意味着缓冲区没有大小限制,确保不会丢失任何数据。
- serverName()¶
- Return type:
字符串
返回由
setServerName()指定的对等方名称,如果setServerName()未被调用或connectToServer()失败,则返回一个空的QString。- setReadBufferSize(size)¶
- Parameters:
size – int
将
QLocalSocket的内部读取缓冲区大小设置为size字节。如果缓冲区大小限制为某个特定大小,
QLocalSocket将不会缓冲超过这个大小的数据。例外情况下,缓冲区大小为0意味着读取缓冲区是无限的,所有传入的数据都会被缓冲。这是默认设置。如果您只在特定时间点读取数据(例如,在实时流应用程序中),或者如果您想保护您的套接字免受接收过多数据的影响,这可能会导致您的应用程序内存不足,此选项非常有用。
另请参阅
- setServerName(name)¶
- Parameters:
name – str
设置要连接的
name。在Windows上,name是命名管道的名称;在Unix上,name是本地域套接字的名称。当套接字未连接时必须调用此函数。
另请参阅
- setSocketDescriptor(socketDescriptor[, socketState=QLocalSocket.LocalSocketState.ConnectedState[, openMode=QIODeviceBase.OpenModeFlag.ReadWrite]])¶
- Parameters:
socketDescriptor –
qintptrsocketState –
LocalSocketStateopenMode –
OpenModeFlag的组合
- Return type:
布尔
使用本地套接字描述符
socketDescriptor初始化QLocalSocket。如果socketDescriptor被接受为有效的套接字描述符,则返回true;否则返回false。套接字以openMode指定的模式打开,并进入socketState指定的套接字状态。- setSocketOptions(option)¶
- Parameters:
option –
SocketOption的组合
另请参阅
- socketDescriptor()¶
- Return type:
qintptr
如果可用,返回
QLocalSocket对象的本地套接字描述符;否则返回-1。当
QLocalSocket处于UnconnectedState时,套接字描述符不可用。描述符的类型取决于平台:在Windows上,返回的值是一个Winsock 2套接字句柄。
在INTEGRITY上,返回的值是
QTcpSocket套接字描述符,类型由socketDescriptor定义。在所有其他类UNIX操作系统上,类型是表示套接字的文件描述符。
- socketOptions()¶
- Return type:
SocketOption的组合
另请参阅
- state()¶
- Return type:
返回套接字的状态。
另请参阅
- stateChanged(socketState)¶
- Parameters:
socketState –
LocalSocketState
每当
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()