- 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()
信号#
状态已改变
注意
详细描述#
在Windows上这是一个命名管道,而在Unix上这是一个本地域套接字。
如果发生错误,
error()
返回错误类型,并可以通过调用error()
获取一个关于所发生情况的人读描述。尽管
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
状态时设置。另请参阅
创建一个新的本地套接字。将
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 – 组合
OpenModeFlag
这是一个重载函数。
设置服务器
name
并尝试与其建立连接。套接字将以给定的
openMode
打开,并首先进入ConnectingState
状态。如果建立了连接,QLocalSocket
将进入ConnectedState
并发出connected()
。调用此函数后,套接字可以发出
errorOccurred()
以指示发生了错误。- connected()#
在调用
connectToServer()
并成功建立连接后发出此信号。- disconnectFromServer()#
尝试关闭套接字。如果有等待写入的数据,
QLocalSocket
将进入ClosingState
状态并等待所有数据写入完成。最终,它将进入UnconnectedState
状态并发出disconnected()
信号。另请参阅
- disconnected()#
该信号在套接字断开连接时发出。
- error()#
- 返回类型:
返回最后发生的错误类型。
另请参阅
- errorOccurred(socketError)#
- 参数:
socketError –
LocalSocketError
当一个错误发生时,会发出此信号。参数
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
。- readBufferSize()#
- 返回类型:
int
返回内部读取缓冲区的大小。这限制在您调用 read() 或 readAll() 之前客户端可以接收的数据量。读取缓冲区大小为 0(默认值)表示缓冲区没有大小限制,确保不会丢失数据。
- serverName()#
- 返回类型:
str
返回通过
setServerName()
方法指定的对等端名称,如果没有调用setServerName()
或connectToServer()
失败,则返回空 QString。- setReadBufferSize(size)#
- 参数:
size – int
将
QLocalSocket
的内部读取缓冲区大小设置为size
字节。如果缓冲区大小限制为一定大小,则
QLocalSocket
不会缓冲超过此大小的数据。例外情况下,缓冲区大小为0表示读取缓冲区是无限的,所有传入数据都将被缓冲。这是默认值。如果仅在特定时间点读取数据(例如,在实时流应用程序中)或希望保护套接字免收过多数据,可能最终导致您的应用程序耗尽内存,则此选项非常有用。
另请参阅
- setServerName(name)#
- 参数:
name – 字符串
设置要连接的对等端名称。在 Windows 上,名称是指定管道的名称;在 Unix 上,名称是本地域套接字的名称。
必须在套接字未连接时调用此函数。
另请参阅
- setSocketDescriptor(socketDescriptor[, socketState=QLocalSocket.LocalSocketState.ConnectedState[, openMode=QIODeviceBase.OpenModeFlag.ReadWrite]])#
- 参数:
socketDescriptor –
qintptr
socketState –
LocalSocketState
openMode – 组合
OpenModeFlag
- 返回类型:
bool
使用本地套接字描述符
socketDescriptor
初始化QLocalSocket
。如果socketDescriptor
被接受为一个有效的套接字描述符,则返回true
;否则返回false
。套接字以openMode
指定的模式打开,并进入由socketState
指定的套接字状态。- setSocketOptions(option)#
- 参数:
option –
SocketOption
的组合
另请参阅
- socketDescriptor()#
- 返回类型:
qintptr
如果可用,返回
QLocalSocket
对象的本地套接字描述符;否则返回 -1。当
QLocalSocket
处于UnconnectedState
状态时,套接字描述符不可用。描述符的类型根据平台而定。在 Windows 上,返回的值是 Winsock 2 套接字句柄。
在 INTEGRITY 上,返回的值是
QTcpSocket
套接字描述符,类型由socketDescriptor
定义。在所有其他类 UNIX 操作系统上,类型是一个表示套接字的文件描述符。
- socketOptions()#
- 返回类型:
SocketOption
的组合
另请参阅
- state()#
- 返回类型:
返回套接字的状态。
另请参阅
- stateChanged(socketState)#
- 参数:
socketState –
LocalSocketState
当
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()