Spec-Zone.ru › Qt

Класс QLocalServer

Класс QLocalServer предоставляет сервер на основе локального сокета. Подробнее...

Заголовок: #include <QLocalServer>
CMake: find_package(Qt6 COMPONENTS Network REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network
Наследует: QObject
  • Список всех членов, включая унаследованные

Типы публичного доступа

Перечисление SocketOption { NoOptions, UserAccessOption, GroupAccessOption, OtherAccessOption, WorldAccessOption, AbstractNamespaceOption }
Флаги SocketOptions

Свойства

  • socketOptions : SocketOptions

Функции публичного доступа

QLocalServer(QObject *parent = nullptr)
виртуальный ~QLocalServer()
void close()
QString errorString() const
QString fullServerName() const
виртуальный bool hasPendingConnections() const
bool isListening() const
bool listen(const QString &name)
bool listen(qintptr socketDescriptor)
int maxPendingConnections() const
виртуальный QLocalSocket * nextPendingConnection()
QAbstractSocket::SocketError serverError() const
QString serverName() const
void setMaxPendingConnections(int numConnections)
void setSocketOptions(QLocalServer::SocketOptions options)
qintptr socketDescriptor() const
QLocalServer::SocketOptions socketOptions() const
bool waitForNewConnection(int msec = 0, bool *timedOut = nullptr)

Сигналы

void newConnection()

Статические члены публичного доступа

bool removeServer(const QString &name)

Защищенные функции

виртуальный void incomingConnection(quintptr socketDescriptor)

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

Этот класс позволяет принимать входящие локальные соединения сокетов.

Вызовите listen(), чтобы сервер начал прослушивать входящие соединения по указанному ключу. При каждом подключении клиента к серверу генерируется сигнал newConnection().

Вызовите nextPendingConnection(), чтобы принять ожидающее соединение как подключенный QLocalSocket. Функция возвращает указатель на QLocalSocket, который может использоваться для связи с клиентом.

При возникновении ошибки serverError() возвращает тип ошибки, а errorString() можно вызвать, чтобы получить удобочитаемое описание произошедшего.

При прослушивании соединений имя, на котором сервер прослушивает, доступно через serverName().

Вызов close() заставляет QLocalServer прекратить прослушивание входящих соединений.

Хотя QLocalServer предназначен для использования с циклом событий, его можно использовать и без него. В этом случае необходимо использовать waitForNewConnection(), который блокируется до тех пор, пока не станет доступно соединение или не истечёт время ожидания.

См. также QLocalSocket и QTcpServer.

Документация по типам членов

[since 5.0] перечисление QLocalServer::SocketOptionфлаги QLocalServer::SocketOptions

Это перечисление описывает возможные параметры, которые могут использоваться для создания сокета. Это изменяет разрешения доступа на платформах (Linux, Windows), которые поддерживают разрешения доступа к сокету. Значения GroupAccess и OtherAccess могут незначительно различаться в зависимости от платформы. В Linux и Android можно использовать сокеты с абстрактными адресами; разрешения доступа к таким сокетам не имеют значения.

Константа Значение Описание
QLocalServer::NoOptions 0x0 Ограничения доступа не установлены.
QLocalServer::UserAccessOption 0x01 Доступ ограничен тем же пользователем, что и процесс, создавший сокет.
QLocalServer::GroupAccessOption 0x2 Доступ ограничен той же группой, но не пользователем, создавшим сокет в Linux. На Windows доступ ограничен основной группой процесса.
QLocalServer::OtherAccessOption 0x4 Доступ разрешён всем, кроме пользователя и группы, создавших сокет в Linux. На Windows доступ разрешён всем.
QLocalServer::WorldAccessOption 0x7 Без ограничений доступа.
QLocalServer::AbstractNamespaceOption 0x8 Сокет прослушивания будет создан в абстрактном пространстве имён. Этот флаг специфичен для Linux. В случае других платформ, ради портативности кода, этот флаг эквивалентен WorldAccessOption.

Это перечисление было введено или изменено в Qt 5.0.

Тип SocketOptions — это typedef для QFlags<SocketOption>. Он хранит логическое ИЛИ сочетание значений SocketOption.

См. также socketOptions.

END_OF_DOCUMENT_MARKER

Документация свойств

[bindable, since 5.0] socketOptions : SocketOptions

Примечание: Это свойство поддерживает привязки QProperty.

Это свойство содержит параметры сокета, которые управляют его работой.

Например, сокет может ограничивать доступ к тому, какие идентификаторы пользователей могут подключиться к сокету.

Эти параметры должны быть установлены до вызова listen().

В некоторых случаях, например, при использовании сокетов Unix-доменных на Linux, доступ к сокету определяется правами доступа к файловой системе и создаётся на основе значения umask. Установка флагов доступа переопределит это и ограничит или разрешит доступ в соответствии с указанными параметрами.

Другие операционные системы на основе Unix, такие как macOS, не учитывают права доступа к файлам для сокетов Unix-доменных и по умолчанию имеют WorldAccess, и эти флаги доступа не будут иметь эффекта.

В Windows, UserAccessOption достаточно, чтобы позволить процессу без повышения привилегий подключиться к локальному серверу, созданному процессом с повышенными привилегиями, запущенным тем же пользователем. GroupAccessOption относится к основной группе процесса (см. TokenPrimaryGroup в документации Windows). OtherAccessOption относится к известной группе «Все пользователи».

На платформах Linux возможно создание сокета в абстрактном пространстве, независимом от файловой системы. Использование такого сокета подразумевает игнорирование параметров разрешений. На других платформах AbstractNamespaceOption эквивалентно WorldAccessOption.

По умолчанию ни один из флагов не установлен, права доступа — это значения по умолчанию для платформы.

Это свойство было добавлено в Qt 5.0.

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

Документация функций-членов

QLocalServer::QLocalServer(QObject *parent = nullptr)

Создаёт новый локальный сервер сокетов с заданным parent.

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

[signal] void QLocalServer::newConnection()

Этот сигнал испускается каждый раз, когда доступно новое подключение.

См. также hasPendingConnections() и nextPendingConnection().

[virtual] QLocalServer::~QLocalServer()

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

Любые клиенты QLocalSockets, которые всё ещё подключены, должны либо отключиться, либо быть перенаправлены в другое родительское соединение, прежде чем сервер будет удалён.

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

void QLocalServer::close()

Останавливает прослушивание входящих подключений. Существующие подключения не затронуты, но любые новые подключения будут отклонены.

См. также isListening() и listen().

QString QLocalServer::errorString() const

Возвращает удобочитаемое сообщение, соответствующее текущей ошибке, сообщённой serverError(). Если подходящая строка недоступна, возвращается пустая строка.

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

QString QLocalServer::fullServerName() const

Возвращает полный путь, на котором сервер прослушивает подключения.

Примечание: Это зависит от платформы.

См. также listen() и serverName().

[virtual] bool QLocalServer::hasPendingConnections() const

Возвращает true если сервер имеет ожидающее подключение; в противном случае возвращает false.

См. также nextPendingConnection() и setMaxPendingConnections().

[virtual protected] void QLocalServer::incomingConnection(quintptr socketDescriptor)

Эта виртуальная функция вызывается QLocalServer, когда доступно новое подключение. socketDescriptor — это дескриптор системного сокета для принятого подключения.

Реализация по умолчанию создаёт QLocalSocket, устанавливает дескриптор сокета, затем сохраняет QLocalSocket в внутреннем списке ожидающих подключений. Наконец, испускается newConnection().

Переопределите эту функцию, чтобы изменить поведение сервера при доступности подключения.

См. также newConnection(), nextPendingConnection() и QLocalSocket::setSocketDescriptor().

bool QLocalServer::isListening() const

Возвращает true если сервер прослушивает входящие подключения, в противном случае false.

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

bool QLocalServer::listen(const QString &name)

Указывает серверу прослушивать входящие подключения на name. Если сервер в настоящее время прослушивает, то он вернёт false. Возвращает true при успехе, в противном случае false.

name может быть единственным именем, и QLocalServer определит правильный путь, специфичный для платформы. serverName() вернёт имя, переданное в listen.

Обычно вы передаёте просто имя, как «foo», но в Unix это также может быть путь, такой как «/tmp/foo», а в Windows — путь к пайпу, такой как «\\.\pipe\foo»

Примечание: В Unix, если сервер аварийно завершается без закрытия listen, произойдёт ошибка AddressInUseError. Чтобы создать новый сервер, файл должен быть удалён. В Windows два локальных сервера могут прослушивать один и тот же пайп одновременно, но все подключения будут направлены на один из серверов.

См. также serverName(), isListening() и close().

[since 5.0] bool QLocalServer::listen(qintptr socketDescriptor)

Инструктирует сервер прослушивать входящие подключения на socketDescriptor. Свойство возвращает false если сервер в настоящее время прослушивает. Оно возвращает true при успехе; в противном случае возвращает false. Сокет должен быть готов к приёму новых подключений без дополнительных вызовов функций, специфичных для платформы. Сокет переведён в режим без блокировки.

serverName(), fullServerName() могут вернуть строку с именем, если эта опция поддерживается платформой; в противном случае они возвращают пустой QString. В частности, адреса сокетов в абстрактном пространстве, поддерживаемом Linux, не будут давать полезных имён, если они содержат непропечатываемые символы.

Эта функция была добавлена в Qt 5.0.

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

int QLocalServer::maxPendingConnections() const

Возвращает максимальное количество ожидающих принятых подключений. По умолчанию 30.

См. также setMaxPendingConnections() и hasPendingConnections().

[virtual] QLocalSocket *QLocalServer::nextPendingConnection()

Возвращает следующее ожидающее подключение как соединённый объект QLocalSocket.

Сокет создаётся как дочерний элемент сервера, поэтому он автоматически удаляется при уничтожении объекта QLocalServer. Тем не менее, рекомендуется удалять объект явно, когда вы закончили с ним, чтобы избежать ненужного использования памяти.

nullptr возвращается, если эта функция вызывается, когда нет ожидающих подключений.

См. также hasPendingConnections(), newConnection() и incomingConnection().

[static] bool QLocalServer::removeServer(const QString &name)

Удаляет любой экземпляр сервера, который может вызвать ошибку при вызове listen(), и возвращает true при успехе; в противном случае возвращает false. Эта функция предназначена для восстановления после сбоя, когда предыдущий экземпляр сервера не был очищен.

В Windows эта функция ничего не делает; в Unix она удаляет файл сокета, заданный name.

Предупреждение: Будьте внимательны, чтобы не удалять сокеты работающих экземпляров.

QAbstractSocket::SocketError QLocalServer::serverError() const

Возвращает тип ошибки, произошедшей последней, или NoError.

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

QString QLocalServer::serverName() const

Возвращает имя сервера, если сервер прослушивает подключения; в противном случае возвращает QString()

См. также listen() и fullServerName().

void QLocalServer::setMaxPendingConnections(int numConnections)

Устанавливает максимальное количество ожидающих принятых подключений в numConnections. QLocalServer примет не более numConnections входящих подключений до вызова nextPendingConnection().

Примечание: Несмотря на то, что QLocalServer прекратит прием новых подключений после достижения максимального числа ожидающих подключений, операционная система может все еще хранить их в очереди, что приведет к тому, что клиенты будут сообщать о подключении.

См. также maxPendingConnections() и hasPendingConnections().

[since 5.10] qintptr QLocalServer::socketDescriptor() const

Возвращает дескриптор системного сокета, используемого сервером для прослушивания входящих запросов, или -1, если сервер не прослушивает.

Тип дескриптора зависит от платформы:

  • В Windows возвращаемое значение является дескриптором сокета Winsock 2.
  • В INTEGRITY возвращаемое значение является дескриптором сокета QTcpServer, а тип определяется socketDescriptor.
  • Во всех других операционных системах семейства Unix тип является дескриптором файла, представляющим прослушивающий сокет.

Эта функция была введена в Qt 5.10.

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

[since 5.0] QLocalServer::SocketOptions QLocalServer::socketOptions() const

Возвращает установленные параметры сокета.

Примечание: Функция-получатель для свойства socketOptions.

Эта функция была введена в Qt 5.0.

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

bool QLocalServer::waitForNewConnection(int msec = 0, bool *timedOut = nullptr)

Ожидает не более msec миллисекунд или до появления входящего подключения. Возвращает true если подключение доступно; в противном случае возвращает false. Если операция завершилась по истечении времени ожидания, и timedOut не является nullptr, *timedOut будет установлен в true.

Это вызывающая функция блокировки. Ее использование не рекомендуется в однопоточных приложениях GUI, так как все приложение перестанет отвечать до возврата функции. waitForNewConnection() в основном полезна, когда нет доступной очереди событий.

Альтернативой без блокировки является подключение к сигналу newConnection().

Если msec равно -1, эта функция не будет ограничена по времени.

См. также hasPendingConnections() и nextPendingConnection().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qlocalserver.html

Spec-Zone.ru

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