一、描述
此类用作接受传入的QLocalSocket连接。
二、类型成员
1、QLocalServer::SocketOption:此枚举描述了可用于创建socket的可用选项。这会更改支持socket访问权限的平台(Linux、Windows)上的访问权限。
- NoOptions:没有设置访问限制。
- UserAccessOption:访问仅限于与socket创建者同一进程的用户。
- GroupAccessOption:访问仅限于同一用户组。(Linux 上socket创建者也可以访问(即使不在同一个用户组))。
- OtherAccessOption:
- Linux:除了创建socket的用户和组之外,所有用户都可以访问。
- Windows:每个用户都可以访问。
- WorldAccessOption:没有访问限制。
三、成员函数
1、[signal] void newConnection()
每次有新连接可用时都会发出此信号。
停止侦听传入连接。现有连接不受影响,但将拒绝任何新连接。
3、QString errorString()
返回适合 serverError() 报告的当前错误的可读消息。
4、QString fullServerName()
返回服务器正在侦听的完整路径。
5、bool hasPendingConnections()
服务器是否有正在连接着的连接。
6、[virtual protected] void incomingConnection(quintptr socketDescriptor)
当新连接可用时,QLocalServer 会调用此虚函数。socketDescriptor 是已接受连接的本机socket描述符。
基本实现创建一个 QLocalSocket,设置socket描述符,然后将 QLocalSocket 存储在内部已连接列表中。最后发出 newConnection() 。
重新实现此函数以在连接可用时更改服务器的行为。
是否在监听连接。
8、bool listen(const QString &name)
告诉服务器侦听 name 传入的连接。如果服务器当前正在侦听,那么它将返回 false。
name 可以是单个名称, QLocalServer 将确定正确的平台特定路径。serverName() 将返回传递给监听的名称。
通常只会传入一个像“foo”这样的名字,但在 Unix 上这也可能是表示路径,比如“/tmp/foo”;而在 Windows 上这可能是一个管道路径,比如“\\.\pipe\foo”
9、bool listen(quintptr socketDescriptor)
重载函数。
10、QLocalSocket * nextPendingConnection()
将下一个挂起的连接作为已连接的 QLocalSocket 对象返回。QLocalSocket 对象的控制权交给调用者。
服务器内部的socket 是作为服务器的子节点(child)创建的,QLocalServer 对象被销毁时它会被自动删除。
11、void setMaxPendingConnections(int numConnections)
设置接受最大连接数。
12、bool waitForNewConnection(int msec = 0, bool *timedOut = nullptr)
最多等待 msec 毫秒或直到传入连接可用。如果连接可用,则返回 true。如果操作超时并且timedOut 不是nullptr,*timedOut 将设置为true。
这是一个阻塞函数。在单线程 GUI 应用程序中建议不使用它,因为整个应用程序将停止响应,直到函数返回。
非阻塞替代方法是连接到 newConnection() 信号。
如果 msec 为 -1,则此函数不会超时。