QSctpServer Class
QSctpServer 类提供了一个基于 SCTP 的服务器。更多内容...
| 头文件: | #include <QSctpServer> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake: | QT += network |
| 继承自: | QTcpServer |
- 所有成员列表,包括继承的成员
- QSctpServer 属于网络编程 API 的一部分。
公共函数
| QSctpServer(QObject *parent = nullptr) | |
| virtual | ~QSctpServer() |
| int | maximumChannelCount() const |
| QSctpSocket * | nextPendingDatagramConnection() |
| void | setMaximumChannelCount(int count) |
重新实现的受保护函数
| virtual 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 接受。该函数返回指向QAbstractSocket::ConnectedState 中QTcpSocket 的指针,您可以使用该指针与客户端进行通信。此模式仅提供对基本 SCTP 协议功能的访问。 该套接字在系统层通过 IP 传输 SCTP 数据包,并通过QTcpSocket 接口与应用程序交互。
相比之下,数据报模式是面向消息的,可在端点之间提供多个数据流的完整同步传输。调用nextPendingDatagramConnection()可将待处理的数据报模式连接接受为已连接的QSctpSocket 。
注意:该 类在 Windows 平台上不被支持。
另请参阅 QTcpServer 、QSctpSocket 和QAbstractSocket 。
成员函数文档
[explicit] QSctpServer::QSctpServer(QObject *parent = nullptr)
创建一个 QSctpServer 对象。
设置数据报操作模式。parent 参数将作为参数传递给QObject 的构造函数。
另请参阅 setMaximumChannelCount()、listen() 和setSocketDescriptor()。
[virtual noexcept] QSctpServer::~QSctpServer()
销毁QSctpServer 对象。如果服务器正在监听连接,则套接字将自动关闭。
另请参阅 close()。
[override virtual protected] 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 。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.