Spec-Zone.ru › Qt 5.12

Класс QSctpServer

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

Заголовок: #include <QSctpServer>
qmake: QT += network
С момента: Qt 5.8
Наследует: QTcpServer
  • Список всех членов, включая наследуемые
  • Устаревшие члены

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

QSctpServer(QObject *parent = nullptr)
virtual ~QSctpServer()
int maximumChannelCount() const
QSctpSocket * nextPendingDatagramConnection()
void setMaximumChannelCount(int count)
  • 18 открытых функций, унаследованных от QTcpServer
  • 31 открытых функций, унаследованных от QObject

Статические открытые члены

const QMetaObject staticMetaObject
  • 9 статических открытых членов, унаследованных от QObject

Переопределенные защищенные функции

virtual void incomingConnection(qintptr socketDescriptor) override
  • 2 защищенных функции, унаследованные от QTcpServer
  • 9 защищенных функций, унаследованных от QObject

Дополнительные унаследованные члены

  • 1 свойство, унаследованное от QObject
  • 1 открытый слот, унаследованный от QObject
  • 2 сигнала, унаследованные от QTcpServer
  • 2 сигнала, унаследованные от QObject
  • 2 защищенных функции, унаследованные от QTcpServer
  • 9 защищенных функций, унаследованных от QObject

Подробное описание

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

SCTP (протокол управления потоком передачи данных) — протокол транспортного уровня, выполняющий аналогичную роль, что и популярные протоколы 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().

QSctpServer::~QSctpServer()

Удаляет объект QSctpServer. Если сервер ожидает подключений, сокет автоматически закрывается.

См. также close().

void QSctpServer::incomingConnection(qintptr socketDescriptor)

Переопределено из QTcpServer::incomingConnection().

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.12/qsctpserver.html

Spec-Zone.ru

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