Spec-Zone.ru › Qt 5.13

Класс 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.13/qsctpserver.html

Spec-Zone.ru

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