Spec-Zone.ru › Qt 5.9

Класс QLocalServer

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

Заголовок: #include <QLocalServer>
qmake: QT += network
С момента: Qt 4.4
Наследует: QObject
  • Список всех членов, включая унаследованные

Типы

перечисление SocketOption { БезНастроек, ДоступПользователя, ДоступГруппа, ДоступДругие, ДоступВсе }
флаги SocketOptions

Свойства

  • socketOptions : SocketOptions
  • 1 свойство унаследовано от QObject

Открытые функции

QLocalServer(QObject *parent = Q_NULLPTR)
~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(SocketOptions options)
SocketOptions socketOptions() const
bool waitForNewConnection(int msec = 0, bool *timedOut = Q_NULLPTR)
  • 32 открытых функции унаследованы от QObject

Сигналы

void newConnection()
  • 2 сигнала унаследованы от QObject

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

bool removeServer(const QString &name)
  • 11 статических публичных членов унаследованы от QObject

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

virtual void incomingConnection(quintptr socketDescriptor)
  • 9 защищенных функций унаследованы от QObject

Дополнительные унаследованные члены

  • 1 открытый слот унаследован от QObject

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

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

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

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

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

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

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

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

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

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

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

перечисление QLocalServer::SocketOptionфлаги QLocalServer::SocketOptions

Это перечисление описывает возможные параметры, которые можно использовать для создания сокета. Это изменяет разрешения доступа на платформах (Linux, Windows), которые поддерживают разрешения доступа к сокету. Как ДоступГруппа, так и ДоступДругие могут незначительно отличаться в своих значениях в зависимости от платформы.

Константа Значение Описание
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.

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

socketOptions : SocketOptions

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

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

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

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

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

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

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

Функции доступа:

SocketOptions socketOptions() const
void setSocketOptions(SocketOptions options)

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

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

QLocalServer::QLocalServer(QObject *parent = Q_NULLPTR)

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

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

QLocalServer::~QLocalServer()

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

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

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

void QLocalServer::close()

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

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

QString QLocalServer::errorString() const

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

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

QString QLocalServer::fullServerName() const

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

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

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

bool QLocalServer::hasPendingConnections() const

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

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

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().

bool QLocalServer::listen(qintptr socketDescriptor)

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

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

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

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

int QLocalServer::maxPendingConnections() const

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

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

void QLocalServer::newConnection()

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

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

QLocalSocket *QLocalServer::nextPendingConnection()

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

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

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

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

bool QLocalServer::removeServer(const QString &name)

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

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

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

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

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().

SocketOptions QLocalServer::socketOptions() const

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

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

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

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

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

Ожидает не более msec миллисекунд или пока не станет доступно входящее подключение. Возвращает true, если подключение доступно; в противном случае возвращает false. Если операция завершилась по таймауту и timedOut не равен 0, *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-5.9/qlocalserver.html

Spec-Zone.ru

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