QSctpServer类

QSctpServer类提供基于SCTP的服务。 更多信息...

头文件 #include <QSctpServer>
CMakefind_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmakeQT += network
继承 QTcpServer

公共函数

QSctpServer(QObject *parent = nullptr)
虚拟~QSctpServer()
intmaximumChannelCount() const
QSctpSocket *nextPendingDatagramConnection()
voidsetMaximumChannelCount(int count)

重写受保护的函数

虚拟 voidincomingConnection(qintptr socketDescriptor) override

详细描述

SCTP(流控制传输协议)是在传输层工作的协议,其作用类似于流行的TCP和UDP协议。与UDP一样,SCTP是面向消息的,但它像TCP一样确保了可靠、顺序的消息传输,并具有拥塞控制。有关更多协议详情,请参阅 QSctpSocket 文档。

QSctpServer是QTcpServer的便捷子类,允许您以TCP模拟或数据报模式接受传入的SCTP套接字连接。

使用QSctpServer最常见的方式是构造一个对象,通过调用 setMaximumChannelCount() 来设置服务器准备支持的通道数。您可以通过在此调用中传递一个负数来设置TCP模拟模式。此外,特殊值0(默认值)表示使用对等端的真实通道数。新传入的连接从服务器套接字描述符继承这个数字,并根据远程端点设置进行调整。

在TCP模拟模式下,接受客户端使用单个连续的字节流进行数据传输,QSctpServer的行为类似于普通的 QTcpServer。调用 nextPendingConnection() 来接受待处理的连接作为一个已连接的 QTcpSocket。该函数返回一个指向 QTcpSocket 的指针,其状态为 QAbstractSocket::ConnectedState,您可以使用它来与客户端通信。此模式仅提供基本SCTP协议功能。套接字在系统级别通过IP传输SCTP数据包,并通过 QTcpSocket 接口与应用程序交互。

相反,数据报模式是面向消息的,并在端点之间提供多个数据流的完全同步传输。调用 nextPendingDatagramConnection() 接受挂起的数据报模式连接作为已连接的 QSctpSocket

注意:此类不支持 Windows 平台。

另请参阅:QTcpServerQSctpSocketQAbstractSocket

成员函数文档

[显式] QSctpServer::QSctpServer(QObject *parent = nullptr)

构建 QSctpServer 对象。

设置数据报操作模式。将 parent 参数传递给 QObject 构造函数。

另请参阅:setMaximumChannelCount()、listen() 和 setSocketDescriptor()。

[虚函数] QSctpServer::~QSctpServer()

销毁 QSctpServer 对象。如果服务器正在监听连接,套接字将自动关闭。

另请参阅:close()。

[重写虚保护] void QSctpServer::incomingConnection(qintptr socketDescriptor)

重新实现:QTcpServer::incomingConnection(qintptr socketDescriptor)。

int QSctpServer::maximumChannelCount() const

返回已接受套接字能够支持的最大通道数。

值为 0(默认值)表示连接通道的数量将由远程端点设置。

如果 QSctpServer 以 TCP 仿真模式运行,则返回 -1。

另请参阅:setMaximumChannelCount()。

QSctpSocket *QSctpServer::nextPendingDatagramConnection()

返回下一个挂起的数据报模式连接作为一个已连接的 QSctpSocket 对象。

数据报模式连接提供了面向消息的多流通信。

套接字作为服务器的子对象创建,这意味着当 QSctpServer 对象被销毁时它将自动删除。在完成使用后仍然建议显式删除对象,以避免内存浪费。

如果没有挂起的数据报模式连接,此函数返回 null。

注意:返回的 QSctpSocket 对象不能在其他线程中使用。如果您想在其他线程中使用传入连接,您需要重写 incomingConnection()。

另请参阅:hasPendingConnections()、nextPendingConnection() 和 QSctpSocket

void QSctpServer::setMaximumChannelCount(int count)

设置服务器准备在数据报模式下支持的最大通道数,为 count。如果 count 为 0,则使用端点的最大通道数值。负 count 设置为 TCP 仿真模式。

仅在 QSctpServer 处于 UnconnectedState 状态时调用此方法。

另请参阅 maximumChannelCount() 和 QSctpSocket

© 2024 Qt 公司有限公司。本文档中包含的文档贡献版权属于其各自的所有者。本文档提供的文档根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款进行许可。Qt 及其相应标志是芬兰和/或其他国家的 The Qt Company Ltd. 的商标。所有其他商标均为各自所有者财产。