Spec-Zone.ru › Qt

Класс QLocalSocket

Класс QLocalSocket предоставляет локальный сокет. Подробнее...

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

Открытые типы

перечисление ОшибкаЛокальногоСокета { ОшибкаОтказаВПодключении, ОшибкаЗакрытияУдаленногоСокета, ОшибкаСервера, ОшибкаДоступаКСокету, ОшибкаРесурсаСокета, …, НеизвестнаяОшибкаСокета }
перечисление СостояниеЛокальногоСокета { Неподключено, Подключение, Подключено, Закрытие }
перечисление ПараметрСокета { БезПараметров, ПараметрАбстрактногоИмениПространства }
флаги ПараметрыСокета

Свойства

  • параметрыСокета : ПараметрыСокета

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

QLocalSocket(QObject *родитель = nullptr)
виртуальный ~QLocalSocket()
void прервать()
void подключитьсяКСерверу(QIODeviceBase::OpenMode режимОткрытия = ReadWrite)
void подключитьсяКСерверу(const QString &имя, QIODeviceBase::OpenMode режимОткрытия = ReadWrite)
void отключитьсяОтСервера()
QLocalSocket::ОшибкаЛокальногоСокета ошибка() const
bool очиститьБуфер()
QString полноеИмяСервера() const
bool действителен() const
qint64 размерБуфераЧтения() const
QString имяСервера() const
void установитьРазмерБуфераЧтения(qint64 размер)
void установитьИмяСервера(const QString &имя)
bool установитьДескрипторСокета(qintptr дескрипторСокета, QLocalSocket::СостояниеЛокальногоСокета состояниеСокета = ConnectedState, QIODeviceBase::OpenMode режимОткрытия = ReadWrite)
void установитьПараметрыСокета(QLocalSocket::ПараметрыСокета параметр)
qintptr дескрипторСокета() const
QLocalSocket::ПараметрыСокета параметрыСокета() const
QLocalSocket::СостояниеЛокальногоСокета состояние() const
bool подождатьПодключения(int мс = 30000)
bool подождатьОтключения(int мс = 30000)

Переопределенные открытые функции

виртуальный qint64 доступныеБайты() const override
виртуальный qint64 байтыНаЗапись() const override
виртуальный bool можноПрочитатьСтроку() const override
виртуальный void закрыть() override
виртуальный bool последовательный() const override
виртуальный bool открыть(QIODeviceBase::OpenMode режимОткрытия = ReadWrite) override
виртуальный bool подождатьЗаписиБайтов(int мс = 30000) override
виртуальный bool подождатьГотовностиКЧтению(int мс = 30000) override

Сигналы

void connected()
void disconnected()
void errorOccurred(QLocalSocket::LocalSocketError socketError)
void stateChanged(QLocalSocket::LocalSocketState socketState)

Переопределённые защищённые функции

virtual qint64 readData(char *data, qint64 c) override
virtual qint64 skipData(qint64 maxSize) override
virtual qint64 writeData(const char *data, qint64 c) override

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

В Windows это именованная труба, а в Unix — сокет локальной области.

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

Хотя QLocalSocket предназначен для использования с циклом событий, его можно использовать и без него. В этом случае необходимо использовать waitForConnected(), waitForReadyRead(), waitForBytesWritten() и waitForDisconnected(), которые блокируются до завершения операции или истечения срока ожидания.

См. также QLocalServer.

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

Перечисление QLocalSocket::LocalSocketError

Перечисление LocalServerError представляет ошибки, которые могут возникнуть. Последнюю ошибку можно получить, вызвав QLocalSocket::error().

Постоянная Значение Описание
QLocalSocket::ConnectionRefusedError QAbstractSocket::ConnectionRefusedError Подключение отклонено удалённым узлом (или истекло время ожидания).
QLocalSocket::PeerClosedError QAbstractSocket::RemoteHostClosedError Удалённый сокет закрыл подключение. Обратите внимание, что сокет клиента (т.е., этот сокет) будет закрыт после отправки уведомления о закрытии удалённого сокета.
QLocalSocket::ServerNotFoundError QAbstractSocket::HostNotFoundError Имя локального сокета не найдено.
QLocalSocket::SocketAccessError QAbstractSocket::SocketAccessError Операция с сокетом не выполнена из-за отсутствия необходимых привилегий у приложения.
QLocalSocket::SocketResourceError QAbstractSocket::SocketResourceError Локальная система исчерпала ресурсы (например, слишком много сокетов).
QLocalSocket::SocketTimeoutError QAbstractSocket::SocketTimeoutError Операция с сокетом истекла по времени ожидания.
QLocalSocket::DatagramTooLargeError QAbstractSocket::DatagramTooLargeError Размер датаграммы превысил системный лимит (который может быть низким, например, 8192 байта).
QLocalSocket::ConnectionError QAbstractSocket::NetworkError Возникла ошибка при подключении.
QLocalSocket::UnsupportedSocketOperationError QAbstractSocket::UnsupportedSocketOperationError Запрошенная операция с сокетом не поддерживается локальной операционной системой.
QLocalSocket::OperationError QAbstractSocket::OperationError Попытка операции, когда состояние сокета не позволяло её выполнить.
QLocalSocket::UnknownSocketError QAbstractSocket::UnknownSocketError Произошла неизвестная ошибка.

enum QLocalSocket::LocalSocketState

Этот перечисление описывает различные состояния сокета.

Постоянная Значение Описание
QLocalSocket::UnconnectedState QAbstractSocket::UnconnectedState Сокет не подключён.
QLocalSocket::ConnectingState QAbstractSocket::ConnectingState Сокет начал установку подключения.
QLocalSocket::ConnectedState QAbstractSocket::ConnectedState Подключение установлено.
QLocalSocket::ClosingState QAbstractSocket::ClosingState Сокет закрывается (данные могут всё ещё ожидать записи).

См. также QLocalSocket::state().

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

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

Постоянная Значение Описание
QLocalSocket::NoOptions 0x00 Нет параметров установлено.
QLocalSocket::AbstractNamespaceOption 0x01 Сокет будет пытаться подключиться к абстрактному адресу. Этот флаг специфичен для Linux и Android. На других платформах он игнорируется.

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

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

См. также socketOptions.

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

[bindable, since 6.2] socketOptions : SocketOptions

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

Это свойство содержит параметры сокета.

Параметры необходимо установить, когда сокет находится в состоянии UnconnectedState.

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

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

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

QLocalSocket::QLocalSocket(QObject *parent = nullptr)

Создаёт новый локальный сокет. Аргумент parent передаётся конструктору QObject.

[signal] void QLocalSocket::connected()

Этот сигнал испускается после того, как connectToServer() был вызван и подключение было успешно установлено.

См. также connectToServer() и disconnected().

[signal] void QLocalSocket::disconnected()

Этот сигнал испускается, когда сокет был отключён.

См. также connectToServer(), disconnectFromServer(), abort(), и connected().

[signal, since 5.15] void QLocalSocket::errorOccurred(QLocalSocket::LocalSocketError socketError)

Этот сигнал испускается после возникновения ошибки. Параметр socketError описывает тип ошибки, которая произошла.

QLocalSocket::LocalSocketError — это не зарегистрированный тип метаданных, поэтому для очереди подключений необходимо зарегистрировать его с помощью Q_DECLARE_METATYPE() и qRegisterMetaType().

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

См. также error(), errorString(), и Создание пользовательских типов Qt.

[signal] void QLocalSocket::stateChanged(QLocalSocket::LocalSocketState socketState)

Этот сигнал испускается всякий раз, когда состояние QLocalSocket меняется. Параметр socketState — это новое состояние.

QLocalSocket::SocketState — это не зарегистрированный тип метаданных, поэтому для очереди подключений необходимо зарегистрировать его с помощью Q_DECLARE_METATYPE() и qRegisterMetaType().

См. также state() и Создание пользовательских типов Qt.

[virtual] QLocalSocket::~QLocalSocket()

Удаляет сокет, закрывая подключение, если необходимо.

void QLocalSocket::abort()

Прерывает текущее подключение и сбрасывает сокет. В отличие от disconnectFromServer(), эта функция сразу закрывает сокет, очищая любые ожидающие данные в буфере записи.

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

[override virtual] qint64 QLocalSocket::bytesAvailable() const

Переопределяет: QIODevice::bytesAvailable() const.

[override virtual] qint64 QLocalSocket::bytesToWrite() const

Переопределяет: QIODevice::bytesToWrite() const.

[override virtual] bool QLocalSocket::canReadLine() const

Переопределяет: QIODevice::canReadLine() const.

[override virtual] void QLocalSocket::close()

Переопределяет: QIODevice::close().

[since 5.1] void QLocalSocket::connectToServer(QIODeviceBase::OpenMode openMode = ReadWrite)

Пытается установить подключение к serverName(). setServerName() необходимо вызвать перед открытием соединения. В качестве альтернативы можно использовать connectToServer(const QString &name, OpenMode openMode);

Сокет открывается в заданном openMode и сначала переходит в состояние ConnectingState. Если подключение установлено, QLocalSocket переходит в состояние ConnectedState и испускает connected().

После вызова этой функции сокет может испустить errorOccurred() для сигнализации о возникшей ошибке.

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

См. также state(), serverName(), и waitForConnected().

END_OF_DOCUMENT_MARKER

void QLocalSocket::connectToServer(const QString &name, QIODeviceBase::OpenMode openMode = ReadWrite)

Это перегруженный метод.

Устанавливает имя сервера name и пытается подключиться к нему.

Сокет открывается в указанном режиме openMode и сначала переходит в состояние ConnectingState. Если соединение установлено, QLocalSocket переходит в состояние ConnectedState и испускает сигнал connected().

После вызова этого метода сокет может испустить сигнал errorOccurred() для сигнализации об ошибке.

См. также state(), serverName() и waitForConnected().

void QLocalSocket::disconnectFromServer()

Пытается закрыть сокет. Если ожидаются данные для записи, QLocalSocket перейдёт в состояние ClosingState и будет ожидать, пока все данные не будут записаны. В конечном итоге, он перейдёт в состояние UnconnectedState и испустит сигнал disconnected().

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

QLocalSocket::LocalSocketError QLocalSocket::error() const

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

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

bool QLocalSocket::flush()

Этот метод записывает как можно больше данных из внутреннего буфера записи в сокет без блокировки. Если какие-либо данные были записаны, этот метод возвращает true; в противном случае возвращает false.

Вызовите этот метод, если вам нужно, чтобы QLocalSocket немедленно начал отправлять буферизованные данные. Количество успешно записанных байтов зависит от операционной системы. В большинстве случаев вызывать этот метод не нужно, так как QLocalSocket будет автоматически отправлять данные, как только управление вернётся в цикл событий. При отсутствии цикла событий, вызовите waitForBytesWritten() вместо этого.

См. также write() и waitForBytesWritten().

QString QLocalSocket::fullServerName() const

Возвращает путь к серверу, к которому подключён сокет.

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

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

[override virtual] bool QLocalSocket::isSequential() const

Переопределяет: QIODevice::isSequential() const.

bool QLocalSocket::isValid() const

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

Примечание: Состояние сокета должно быть ConnectedState перед чтением и записью.

См. также state() и connectToServer().

[override virtual] bool QLocalSocket::open(QIODeviceBase::OpenMode openMode = ReadWrite)

Переопределяет: QIODevice::open(QIODeviceBase::OpenMode mode).

Эквивалентно connectToServer(OpenMode mode). Сокет открывается в заданном режиме openMode для сервера, определённого методом setServerName().

Обратите внимание, что в отличие от большинства других подклассов QIODevice, open() может не открыть устройство непосредственно. Метод возвращает false, если сокет уже был подключен или если сервер для подключения не был определен, и true в любом другом случае. Сигналы connected() или errorOccurred() будут испущены, когда устройство фактически будет открыто (или подключение не удастся).

См. connectToServer() для получения дополнительной информации.

qint64 QLocalSocket::readBufferSize() const

Возвращает размер внутреннего буфера чтения. Это ограничивает количество данных, которые клиент может получить, прежде чем вы вызовете read() или readAll(). Размер буфера чтения 0 (по умолчанию) означает, что буфер не имеет ограничений по размеру, гарантируя, что данные не будут потеряны.

См. также setReadBufferSize() и read().

[override virtual protected] qint64 QLocalSocket::readData(char *data, qint64 c)

Переопределяет: QIODevice::readData(char *data, qint64 maxSize).

QString QLocalSocket::serverName() const

Возвращает имя узла, заданное методом setServerName(), или пустую строку QString, если метод setServerName() не был вызван или подключение connectToServer() не удалось.

См. также setServerName(), connectToServer() и fullServerName().

void QLocalSocket::setReadBufferSize(qint64 size)

Устанавливает размер внутреннего буфера чтения QLocalSocket в size байт.

Если размер буфера ограничен, QLocalSocket не будет буферизовать больше, чем этот размер данных. В исключительных случаях, размер буфера 0 означает, что буфер чтения не ограничен и все входящие данные буферизуются. Это значение по умолчанию.

Этот параметр полезен, если вы читаете данные только в определённые моменты времени (например, в приложении для потоковой передачи в реальном времени) или если вы хотите защитить сокет от получения слишком большого объёма данных, что может привести к недостатку памяти в вашем приложении.

См. также readBufferSize() и read().

[since 5.1] void QLocalSocket::setServerName(const QString &name)

Устанавливает имя name узла для подключения. В Windows это имя именованной папки; в Unix это имя локального сокета домена.

Этот метод должен быть вызван, когда сокет не подключён.

Этот метод был представлен в Qt 5.1.

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

bool QLocalSocket::setSocketDescriptor(qintptr socketDescriptor, QLocalSocket::LocalSocketState socketState = ConnectedState, QIODeviceBase::OpenMode openMode = ReadWrite)

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

Примечание: Невозможно инициализировать два локальных сокета с одним и тем же дескриптором нативного сокета.

См. также socketDescriptor(), state() и openMode().

[override virtual protected] qint64 QLocalSocket::skipData(qint64 maxSize)

Переопределяет: QIODevice::skipData(qint64 maxSize).

qintptr QLocalSocket::socketDescriptor() const

Возвращает дескриптор нативного сокета объекта QLocalSocket, если он доступен; в противном случае возвращает -1.

Дескриптор сокета недоступен, когда QLocalSocket находится в состоянии UnconnectedState. Тип дескриптора зависит от платформы:

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

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

QLocalSocket::LocalSocketState QLocalSocket::state() const

Возвращает состояние сокета.

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

[override virtual] bool QLocalSocket::waitForBytesWritten(int msecs = 30000)

Переопределяет: QIODevice::waitForBytesWritten(int msecs).

bool QLocalSocket::waitForConnected(int msecs = 30000)

Ожидает подключения сокета до msecs миллисекунд. Если подключение установлено, функция возвращает true; в противном случае возвращает false. В случае возвращения false, вы можете вызвать error() для определения причины ошибки.

Следующий пример ожидает установления соединения до одной секунды:

socket->connectToServer("market");
if (socket->waitForConnected(1000))
    qDebug("Connected!");

Если msecs равно -1, функция не будет ожидать истечения времени.

См. также connectToServer() и connected().

bool QLocalSocket::waitForDisconnected(int msecs = 30000)

Ожидает разъединения сокета до msecs миллисекунд. Если подключение было успешно разъединено, функция возвращает true; в противном случае возвращает false (если время ожидания истекло, произошла ошибка или этот QLocalSocket уже разъединён). В случае возвращения false, вы можете вызвать error() для определения причины ошибки.

Следующий пример ожидает закрытия соединения до одной секунды:

socket->disconnectFromServer();
if (socket->state() == QLocalSocket::UnconnectedState
    || socket->waitForDisconnected(1000)) {
    qDebug("Disconnected!");
}

Если msecs равно -1, функция не будет ожидать истечения времени.

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

[override virtual] bool QLocalSocket::waitForReadyRead(int msecs = 30000)

Переопределяет: QIODevice::waitForReadyRead(int msecs).

Функция блокируется до тех пор, пока данные не станут доступны для чтения и не будет отправлен сигнал readyRead(). Функция ожидает истечения msecs миллисекунд; значение по умолчанию составляет 30000 миллисекунд.

Функция возвращает true если данные доступны для чтения; в противном случае возвращает false (если произошла ошибка или время ожидания истекло).

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

[override virtual protected] qint64 QLocalSocket::writeData(const char *data, qint64 c)

Переопределяет: QIODevice::writeData(const char *data, qint64 maxSize).

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

Spec-Zone.ru

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