Spec-Zone.ru › Qt 6.0

Класс 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 (Протокол управления потоковым передачей) — протокол транспортного уровня, выполняющий аналогичные функции популярным протоколам TCP и UDP. Как и UDP, SCTP ориентирован на сообщения, но обеспечивает надёжную и последовательную передачу сообщений с управлением загрузкой, как в TCP. Дополнительные сведения о протоколе см. в документации к QSctpSocket.

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

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

В режиме эмуляции 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-6.0/qsctpserver.html

Spec-Zone.ru

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