Spec-Zone.ru › Qt 5.15

Класс QSctpServer

Класс QSctpServer предоставляет сервер на основе протокола SCTP. Подробнее...

Заголовок: #include <QSctpServer>
qmake: QT += network
С тех пор: 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 (Stream Control Transmission Protocol) — это протокол транспортного уровня, выполняющий аналогичную роль популярным протоколам TCP и UDP. Как и UDP, SCTP ориентирован на сообщения, но он гарантирует надёжную и последовательную передачу сообщений с управлением загрузкой, как TCP. Подробную информацию о протоколе см. в документации к QSctpSocket.

QSctpServer — это удобный подкласс QTcpServer, который позволяет принимать входящие подключения к сокетам SCTP либо в режиме эмуляции TCP, либо в режиме датаграмм.

Наиболее распространённый способ использования QSctpServer — создание объекта и установка максимального количества каналов, которые сервер готов поддерживать, вызовом setMaximumChannelCount(). Режим эмуляции TCP можно установить, передав отрицательное значение в этом вызове. Также специальное значение 0 (по умолчанию) указывает на использование значения со стороны клиента в качестве фактического количества каналов. Новое входящее подключение наследует это значение от описателя сокета сервера и корректирует его в соответствии с настройками удалённого конечного узла.

В режиме эмуляции TCP подключённые клиенты используют один непрерывный поток байтов для передачи данных, и QSctpServer действует как обычный QTcpServer. Вызовите nextPendingConnection(), чтобы принять ожидающее подключение в качестве подключённого QTcpSocket. Функция возвращает указатель на QTcpSocket в состоянии QAbstractSocket::ConnectedState, который можно использовать для связи с клиентом. Этот режим предоставляет доступ только к основным функциям протокола SCTP. Сокет передает пакеты SCTP по IP на системном уровне и взаимодействует с приложением через интерфейс QTcpSocket.

В отличие от этого, режим датаграмм ориентирован на сообщения и предоставляет полную одновременную передачу нескольких потоков данных между конечными узлами. Вызовите nextPendingDatagramConnection(), чтобы принять ожидающее подключение в режиме датаграмм как подключённый QSctpSocket.

Примечание: Эта функция не поддерживается на платформе Windows.

См. также QTcpServer, QSctpSocket и QAbstractSocket.

Документация по функциям-членам

QSctpServer::QSctpServer(QObject *parent = nullptr)

Конструирует объект QSctpServer.

Устанавливает режим работы датаграмм. Аргумент parent передаётся конструктору QObject.

См. также setMaximumChannelCount(), listen() и setSocketDescriptor().

[virtual] 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.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qsctpserver.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API