QSctpServer类
QSctpServer类提供基于SCTP的服务。 更多信息...
头文件 | #include <QSctpServer> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
qmake | QT += network |
继承 | QTcpServer |
- 包括继承成员在内的所有成员列表
- QSctpServer是网络编程API的一部分。网络编程API.
公共函数
QSctpServer(QObject *parent = nullptr) | |
虚拟 | ~QSctpServer() |
int | maximumChannelCount() const |
QSctpSocket * | nextPendingDatagramConnection() |
void | setMaximumChannelCount(int count) |
重写受保护的函数
虚拟 void | incomingConnection(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 平台。
另请参阅:QTcpServer、QSctpSocket 和 QAbstractSocket。
成员函数文档
[显式]
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. 的商标。所有其他商标均为各自所有者财产。