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 –
qintptr
socketState –
LocalSocketState
openMode –
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()