Класс 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
- 32 открытых функций унаследовано от QObject
Переопределённые защищённые функции
| virtual void | incomingConnection(qintptr socketDescriptor) |
- 2 защищённых функции унаследовано от QTcpServer
- 9 защищённых функций унаследовано от QObject
Дополнительные унаследованные члены
- 1 свойство унаследовано от QObject
- 1 открытый слот унаследован от QObject
- 2 сигнала унаследовано от QTcpServer
- 2 сигнала унаследовано от QObject
- 11 статических открытых членов унаследовано от QObject
- 2 защищённых функции унаследовано от QTcpServer
- 9 защищённых функций унаследовано от 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().
[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/qt-5.9/qsctpserver.html