Класс 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
- 34 открытых функций унаследовано от QObject
Переопределенные защищенные функции
| virtual void | incomingConnection(qintptr socketDescriptor) override |
- 2 защищенных функции унаследовано от QTcpServer
- 9 защищенных функций унаследовано от QObject
Дополнительные унаследованные члены
- 1 свойство унаследовано от QObject
- 1 открытый слот унаследован от QObject
- 2 сигнала унаследовано от QTcpServer
- 2 сигнала унаследовано от QObject
- 1 открытая переменная унаследована от QObject
- 10 статических открытых членов унаследовано от QObject
- 2 защищенных функции унаследовано от QTcpServer
- 9 защищенных функций унаследовано от QObject
- 2 защищенных переменных унаследовано от QObject
Подробное описание
Класс QSctpServer предоставляет сервер на основе протокола SCTP.
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().
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/archives/qt-5.11/qsctpserver.html