Класс 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