Qt网络编程:QLocalServer

一、描述

此类用作接受传入的QLocalSocket连接。


二、类型成员

1、QLocalServer::SocketOption:此枚举描述了可用于创建socket的可用选项。这会更改支持socket访问权限的平台(Linux、Windows)上的访问权限。

  • NoOptions:没有设置访问限制。
  • UserAccessOption:访问仅限于与socket创建者同一进程的用户。
  • GroupAccessOption:访问仅限于同一用户组。(Linux 上socket创建者也可以访问(即使不在同一个用户组))。
  • OtherAccessOption
  1. Linux:除了创建socket的用户和组之外,所有用户都可以访问。
  2. Windows:每个用户都可以访问。
  • WorldAccessOption:没有访问限制。

三、成员函数

1、[signal] void newConnection()

每次有新连接可用时都会发出此信号。

2、void close()

停止侦听传入连接。现有连接不受影响,但将拒绝任何新连接。

3、QString errorString()

返回适合 serverError() 报告的当前错误的可读消息。

4、QString fullServerName()

返回服务器正在侦听的完整路径。

5、bool hasPendingConnections()

服务器是否有正在连接着的连接。

6、[virtual protected] void incomingConnection(quintptr socketDescriptor)

当新连接可用时,QLocalServer 会调用此虚函数。socketDescriptor 是已接受连接的本机socket描述符。

基本实现创建一个 QLocalSocket,设置socket描述符,然后将 QLocalSocket 存储在内部已连接列表中。最后发出 newConnection() 。

重新实现此函数以在连接可用时更改服务器的行为。

7、bool isListening()

是否在监听连接。

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,则此函数不会超时。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt中进行网络编程,主要涉及到的头文件有**<QTcpSocket>和<QTcpServer>**。以下是一些关于Qt网络编程的信息: 1. **客户端编程**: - **创建QTcpSocket对象**:用于建立与服务器的连接。 - **连接至服务器**:使用`connectToHost()`函数连接到指定的服务器。 - **发送数据**:通过`write()`函数来发送数据到服务器。 - **读取数据**:使用`readAll()`函数来接收来自服务器的数据。 - **断开连接**:完成数据传输后,需要断开与服务器的连接。 2. **服务器端编程**: - **创建QTcpServer对象**:用于监听客户端的连接请求。 - **绑定本地信息**:通过调用`listen()`函数并指定地址和端口来开始监听。 - **等待客户端连接**:当有新的连接请求时,`newConnection()`信号会被触发。 - **读取和发送数据**:与客户端类似,服务器也需要读取和发送数据。 - **断开连接**:结束客户端的连接。 3. **头文件引入**: - 对于客户端,需要包含`#include <QTcpSocket>`。 - 对于服务器,需要包含`#include <QTcpServer>`。 4. **项目文件配置**: - 在项目的`.pro`文件中,需要添加`QT += network`以启用网络模块。 5. **数据流操作**: - 在进行数据收发时,可以使用`QDataStream`类来处理数据流,它提供了一种方便的方式来序列化和反序列化数据。 综上所述,这些是Qt网络编程的基本概念和步骤。在实际开发中,还需要考虑到错误处理、多线程管理以及安全性等问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值