Spec-Zone.ru › Qt 6.1

Класс 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 }
флаги SocketOptions

Свойства

  • socketOptions : SocketOptions

Общедоступные функции

QLocalServer(QObject *parent = nullptr)
virtual ~QLocalServer()
void close()
QString errorString() const
QString fullServerName() const
virtual bool hasPendingConnections() const
bool isListening() const
bool listen(const QString &name)
bool listen(qintptr socketDescriptor)
int maxPendingConnections() const
virtual 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)

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

virtual 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 могут немного отличаться в зависимости от платформы.

Постоянная Значение Описание
QLocalServer::NoOptions 0x0 Ограничения доступа не установлены.
QLocalServer::UserAccessOption 0x01 Доступ ограничен для того же пользователя, что и процесс, создавший сокет.
QLocalServer::GroupAccessOption 0x2 Доступ ограничен для той же группы, но не для пользователя, создавшего сокет на Linux. Доступ ограничен до основной группы процесса на Windows.
QLocalServer::OtherAccessOption 0x4 Доступ предоставляется всем, кроме пользователя и группы, создавших сокет на Linux. Доступ предоставляется всем на Windows.
QLocalServer::WorldAccessOption 0x7 Без ограничений доступа.

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

Тип SocketOptions является псевдонимом для QFlags<SocketOption>. Он хранит логическое ИЛИ комбинацию значений SocketOption.

См. также socketOptions.

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

[bindable, since 5.0] socketOptions : SocketOptions

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

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

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

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

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

В других операционных системах на основе Unix, таких как macOS, разрешения файловой системы для Unix-доменных сокетов не учитываются и по умолчанию доступны всем (WorldAccess). Флаги разрешений в этом случае не имеют эффекта.

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

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

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

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

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

QLocalServer::QLocalServer(QObject *parent = nullptr)

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

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

END_OF_DOCUMENT_MARKER

[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.

Эта функция была добавлена в 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 Socket Handle.
  • В 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.

Это вызов блокирующей функции. Его использование не рекомендуется в однопоточной приложении графического интерфейса, так как все приложение перестанет отвечать, пока функция не вернет результат. 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.1/qlocalserver.html

Spec-Zone.ru

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