QLocalSocket 类

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

头: #include <QLocalSocket>
qmake: QT += network
Since: Qt 4.4
继承: QIODevice

公共类型

enum LocalSocketError { ConnectionRefusedError, PeerClosedError, ServerNotFoundError, SocketAccessError, ..., UnknownSocketError }
enum LocalSocketState { UnconnectedState, ConnectingState, ConnectedState, ClosingState }

公共函数

QLocalSocket (QObject * parent = Q_NULLPTR)
~QLocalSocket ()
void abort ()
void connectToServer (OpenMode openMode = ReadWrite)
void connectToServer (const QString & name , OpenMode openMode = ReadWrite)
void disconnectFromServer ()
LocalSocketError error () const
bool flush ()
QString fullServerName () const
bool isValid () const
qint64 readBufferSize () const
QString serverName () const
void setReadBufferSize (qint64 size )
void setServerName (const QString & name )
bool setSocketDescriptor (qintptr socketDescriptor , LocalSocketState socketState = ConnectedState, OpenMode openMode = ReadWrite)
qintptr socketDescriptor () const
LocalSocketState state () const
bool waitForConnected (int msecs = 30000)
bool waitForDisconnected (int msecs = 30000)

重实现公共函数

virtual qint64 bytesAvailable () const
virtual qint64 bytesToWrite () const
virtual bool canReadLine () const
virtual void close ()
virtual bool isSequential () const
virtual bool open (OpenMode openMode = ReadWrite)
virtual bool waitForBytesWritten (int msecs = 30000)
virtual bool waitForReadyRead (int msecs = 30000)

信号

void connected ()
void disconnected ()
void error (QLocalSocket::LocalSocketError socketError )
void stateChanged (QLocalSocket::LocalSocketState socketState )

重实现保护函数

virtual qint64 readData (char * data , qint64 c )
virtual qint64 writeData (const char * data , qint64 c )

额外继承成员

详细描述

The QLocalSocket 类提供本地套接字。

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

若出现错误,socketError() 返回错误类型,且 errorString () 可以被调用,以获得发生什么的人类可读描述。

尽管 QLocalSocket 是为用于事件循环而设计的,没有事件循环使用它是可能的。在此情况下,必须使用 waitForConnected (), waitForReadyRead (), waitForBytesWritten (),和 waitForDisconnected () 阻塞直到操作完成 (或超时到期)。

另请参阅 QLocalServer .

成员类型文档编制

enum QLocalSocket:: LocalSocketError

LocalServerError 枚举表示可能发生的错误。最近错误可以被检索透过调用 QLocalSocket::error ().

常量 描述
QLocalSocket::ConnectionRefusedError QAbstractSocket::ConnectionRefusedError 连接被对等方拒绝 (或超时)。
QLocalSocket::PeerClosedError QAbstractSocket::RemoteHostClosedError 远程套接字关闭连接。注意:客户端套接字 (即:此套接字) 将在远程关闭通知发送后被关闭。
QLocalSocket::ServerNotFoundError QAbstractSocket::HostNotFoundError 本地套接字名找不到。
QLocalSocket::SocketAccessError QAbstractSocket::SocketAccessError 套接字操作失败,因为应用程序缺乏所需特权。
QLocalSocket::SocketResourceError QAbstractSocket::SocketResourceError 本地系统资源不足 (如:太多套接字)。
QLocalSocket::SocketTimeoutError QAbstractSocket::SocketTimeoutError 套接字操作超时。
QLocalSocket::DatagramTooLargeError QAbstractSocket::DatagramTooLargeError 数据报大于操作系统的限制 (可以低至 8192 字节)。
QLocalSocket::ConnectionError QAbstractSocket::NetworkError 连接发生错误。
QLocalSocket::UnsupportedSocketOperationError QAbstractSocket::UnsupportedSocketOperationError 本地操作系统不支持所请求的套接字操作。
QLocalSocket::OperationError QAbstractSocket::OperationError 试图操作当套接字处于不准许状态时。
QLocalSocket::UnknownSocketError QAbstractSocket::UnknownSocketError 发生无法识别的错误。

enum QLocalSocket:: LocalSocketState

此枚举描述套接字可以处于的不同状态。

常量 描述
QLocalSocket::UnconnectedState QAbstractSocket::UnconnectedState 套接字未连接。
QLocalSocket::ConnectingState QAbstractSocket::ConnectingState 套接字开始建立连接。
QLocalSocket::ConnectedState QAbstractSocket::ConnectedState 已建立连接。
QLocalSocket::ClosingState QAbstractSocket::ClosingState 套接字即将关闭 (数据可能仍在等待被写入)。

另请参阅 QLocalSocket::state ().

成员函数文档编制

QLocalSocket:: QLocalSocket ( QObject * parent = Q_NULLPTR)

创建新的本地套接字。 parent 自变量会被传递给 QObject 的构造函数。

QLocalSocket:: ~QLocalSocket ()

销毁套接字,关闭连接 (若有必要)。

void QLocalSocket:: abort ()

中止当前连接并重置套接字。不像 disconnectFromServer (),此函数立即关闭套接字,清零任何写入缓冲待决数据。

另请参阅 disconnectFromServer () 和 close ().

[虚拟] qint64 QLocalSocket:: bytesAvailable () const

重实现自 QIODevice::bytesAvailable ().

[虚拟] qint64 QLocalSocket:: bytesToWrite () const

重实现自 QIODevice::bytesToWrite ().

[虚拟] bool QLocalSocket:: canReadLine () const

重实现自 QIODevice::canReadLine ().

[虚拟] void QLocalSocket:: close ()

重实现自 QIODevice::close ().

void QLocalSocket:: connectToServer ( OpenMode openMode = ReadWrite)

试图连接到 serverName (). setServerName () 必须被调用在打开连接之前。另外,您可以使用 connectToServer(const QString &name, OpenMode openMode );

套接字被打开采用给定 openMode 并首先进入 ConnectingState 。若建立连接, QLocalSocket 进入 ConnectedState 并发射 connected ().

在调用此函数后,套接字可以发射 error () 给 (发出错误的) 信号。

该函数在 Qt 5.1 引入。

另请参阅 state (), serverName (),和 waitForConnected ().

void QLocalSocket:: connectToServer (const QString & name , OpenMode openMode = ReadWrite)

这是重载函数。

设置服务器 name 并试图与它建立连接。

套接字被打开采用给定 openMode 并首先进入 ConnectingState 。若建立连接, QLocalSocket 进入 ConnectedState 并发射 connected ().

在调用此函数后,套接字可以发射 error () 给 (发出错误的) 信号。

另请参阅 state (), serverName (),和 waitForConnected ().

[signal] void QLocalSocket:: connected ()

此信号被发射在 connectToServer () 有被调用且连接已成功建立。

另请参阅 connectToServer () 和 disconnected ().

void QLocalSocket:: disconnectFromServer ()

试图关闭套接字。若有等待写入的待决数据, QLocalSocket 将进入 ClosingState 并等待直到所有数据被写入。最终,它将进入 UnconnectedState 并发射 disconnectedFromServer() 信号。

另请参阅 connectToServer ().

[signal] void QLocalSocket:: disconnected ()

此信号被发射当套接字断开连接时。

另请参阅 connectToServer (), disconnectFromServer (), abort (),和 connected ().

LocalSocketError QLocalSocket:: error () const

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

另请参阅 state () 和 errorString ().

[signal] void QLocalSocket:: error ( QLocalSocket::LocalSocketError socketError )

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

QLocalSocket::LocalSocketError 不是注册 Metatype (元类型),因此,对于队列化连接而言,必须注册它采用 Q_DECLARE_METATYPE () 和 qRegisterMetaType ().

注意: 信号 error 在此类中是重载。要使用函数指针句法连接到此信号,必须在静态铸造中指定信号类型,如此范例所示:

connect(localSocket, static_cast<void(QLocalSocket::*)(QLocalSocket::LocalSocketError)>(&QLocalSocket::error),
    [=](QLocalSocket::LocalSocketError socketError){ /* ... */ });
					

另请参阅 error (), errorString (),和 创建自定义 Qt 类型 .

bool QLocalSocket:: flush ()

此函数尽可能将内部写入缓冲不阻塞地写入套接字。若有写入任何数据,此函数返回 true ;否则 false 被返回。

调用此函数若需要 QLocalSocket 立即开始发送缓冲数据。成功写入的字节数从属操作系统。在大多数情况下,不需调用此函数,因为 QLocalSocket 将开始自动发送数据,一旦控制回到事件循环。若缺乏事件循环,调用 waitForBytesWritten () 代替。

另请参阅 write () 和 waitForBytesWritten ().

QString QLocalSocket:: fullServerName () const

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

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

另请参阅 connectToServer () 和 serverName ().

[虚拟] bool QLocalSocket:: isSequential () const

重实现自 QIODevice::isSequential ().

bool QLocalSocket:: isValid () const

返回 true 若套接字是有效的且准备使用;否则返回 false .

注意: 套接字的状态必须为 ConnectedState 在读写可以发生之前。

另请参阅 state () 和 connectToServer ().

[虚拟] bool QLocalSocket:: open ( OpenMode openMode = ReadWrite)

重实现自 QIODevice::open ().

相当于 connectToServer ( OpenMode 模式)。套接字被打开采用给定 openMode 到定义服务器由 setServerName ().

注意:不像大多数其它 QIODevice 子类,open() 不能直接打开设备。函数返回 false 若套接字已连接 (或未定义要连接的服务器);返回 true 在任何其它情况下。 connected () 或 error () 信号会被发射一旦设备被实际打开 (或连接失败)。

connectToServer () 了解更多细节。

qint64 QLocalSocket:: readBufferSize () const

返回内部读取缓冲尺寸。这限制客户端可以接收的数据量先于调用 read () 或 readAll ()。0 (默认) 读取缓冲尺寸意味着缓冲没有大小限制,确保数据不丢失。

另请参阅 setReadBufferSize () 和 read ().

[virtual protected] qint64 QLocalSocket:: readData ( char * data , qint64 c )

重实现自 QIODevice::readData ().

QString QLocalSocket:: serverName () const

返回对等方的名称作为指定通过 setServerName (),或空 QString if setServerName () 尚未被调用或 connectToServer () 失败。

另请参阅 setServerName (), connectToServer (),和 fullServerName ().

void QLocalSocket:: setReadBufferSize ( qint64 size )

设置尺寸为 QLocalSocket 的内部读取缓冲到 size 字节。

若缓冲尺寸被限制到某个大小, QLocalSocket 不会缓冲超过此大小的数据。例外,0 缓冲尺寸意味着读取缓冲是无限的且缓冲所有传入数据。这是默认值。

此选项是有用的若仅在某时间点读取数据 (如:在实时流应用程序中),或者,若希望保护套接字以免接收太多数据 (可能最终导致应用程序内存不足)。

另请参阅 readBufferSize () 和 read ().

void QLocalSocket:: setServerName (const QString & name )

设置 name 为要连接的对等方。在 Windows 名称是命名管道的名称;在 Unix 名称是本地域套接字的名称。

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

该函数在 Qt 5.1 引入。

另请参阅 serverName ().

bool QLocalSocket:: setSocketDescriptor ( qintptr socketDescriptor , LocalSocketState socketState = ConnectedState, OpenMode openMode = ReadWrite)

初始化 QLocalSocket 采用本机套接字描述符 socketDescriptor 。返回 true if socketDescriptor 被接受作为有效套接字描述符;否则返回 false 。以指定模式打开套接字通过 openMode ,并进入指定套接字状态通过 socketState .

注意: 采用相同本机套接字描述符初始化 2 个本地套接字是不可能的。

另请参阅 socketDescriptor (), state (),和 openMode ().

qintptr QLocalSocket:: socketDescriptor () const

返回本地套接字描述符为 QLocalSocket 对象若这是可用的;否则返回 -1。

套接字描述符不可用当 QLocalSocket 是在 UnconnectedState .

另请参阅 setSocketDescriptor ().

LocalSocketState QLocalSocket:: state () const

返回套接字的状态。

另请参阅 error ().

[signal] void QLocalSocket:: stateChanged ( QLocalSocket::LocalSocketState socketState )

此信号被发射每当 QLocalSocket 的状态改变。 socketState 参数是新状态。

QLocalSocket::SocketState 不是注册 Metatype (元类型),因此,对于队列化连接而言,必须注册它采用 Q_DECLARE_METATYPE () 和 qRegisterMetaType ().

另请参阅 state () 和 创建自定义 Qt 类型 .

[虚拟] bool QLocalSocket:: waitForBytesWritten ( int msecs = 30000)

重实现自 QIODevice::waitForBytesWritten ().

bool QLocalSocket:: waitForConnected ( int msecs = 30000)

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

以下范例最多等待 1 秒为建立连接:

socket->connectToServer("market");
if (socket->waitForConnected(1000))
    qDebug("Connected!");
					

msecs 是 -1,此函数不会超时。

另请参阅 connectToServer () 和 connected ().

bool QLocalSocket:: waitForDisconnected ( int msecs = 30000)

等待直到套接字已断开连接,最长 msecs 毫秒。若连接已断开,此函数返回 true ;否则它返回 false 。若它返回 false ,可以调用 error () 以确定错误的原因。

以下范例最多等待 1 秒为关闭连接:

socket->disconnectFromServer();
if (socket->waitForDisconnected(1000))
    qDebug("Disconnected!");
					

msecs 是 -1,此函数不会超时。

另请参阅 disconnectFromServer () 和 close ().

[虚拟] bool QLocalSocket:: waitForReadyRead ( int msecs = 30000)

重实现自 QIODevice::waitForReadyRead ().

此函数阻塞,直到有数据可供读取且 readyRead() 信号已被发射。函数将超时花费 msecs 毫秒;默认超时是 30000 毫秒。

函数返回 true 若数据可用于读取;否则它返回 false (若发生错误或操作超时)。

另请参阅 waitForBytesWritten ().

[virtual protected] qint64 QLocalSocket:: writeData (const char * data , qint64 c )

重实现自 QIODevice::writeData ().