QSctpServer 类

QSctpServer 类提供基于 SCTP (流控制传输协议) 的服务器。 更多...

头: #include <QSctpServer>
qmake: QT += network
Since: Qt 5.8
继承: QTcpServer

该类在 Qt 5.8 引入。

公共函数

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 。函数返回的指针指向 QTcpSocket in 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 ().

[override virtual protected] void QSctpServer:: incomingConnection ( qintptr socketDescriptor )

重实现: QTcpServer::incomingConnection (qintptr socketDescriptor).

int QSctpServer:: maximumChannelCount () const

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

0 值 (默认) 意味着连接通道数将由远程端点进行设置。

返回 -1,若 QSctpServer 运行在 TCP 仿真模式下。

另请参阅 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 .