Spec-Zone.ru › Qt

Класс QSctpServer

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

Заголовок: #include <QSctpServer>
CMake: find_package(Qt6 COMPONENTS Network REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network
С момента: Qt 5.8
Наследуется от: QTcpServer
  • Список всех членов, включая унаследованные

Открытые функции

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. Для принятия ожидающего подключения как подключённого QTcpSocket вызовите nextPendingConnection(). Функция возвращает указатель на QTcpSocket в состоянии QAbstractSocket::ConnectedState, который можно использовать для общения с клиентом. Этот режим предоставляет доступ только к основным функциям протокола SCTP. Сокет передает пакеты SCTP через IP на системном уровне и взаимодействует с приложением через интерфейс QTcpSocket.

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

Примечание: Эта функция не поддерживается на платформе 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-6.2/qsctpserver.html

Spec-Zone.ru

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