Spec-Zone.ru › Qt 5.6

Класс QLocalSocket

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

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

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

перечисление LocalSocketError { ОшибкаОтказаВПодключении, ОшибкаЗакрытияСоединения, ОшибкаСервера, ОшибкаДоступаКСокету, ..., НеизвестнаяОшибкаСокета }
перечисление LocalSocketState { СостояниеОтсутствияПодключения, СостояниеПодключения, СостояниеПодключен, СостояниеЗакрытия }

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

QLocalSocket(QObject *parent = Q_NULLPTR)
~QLocalSocket()
void abort()
void connectToServer(OpenMode openMode = ReadWrite)
void connectToServer(const QString &name, OpenMode openMode = ReadWrite)
void disconnectFromServer()
LocalSocketError error() const
bool flush()
QString fullServerName() const
bool isValid() const
qint64 readBufferSize() const
QString serverName() const
void setReadBufferSize(qint64 size)
void setServerName(const QString &name)
bool setSocketDescriptor(qintptr socketDescriptor, LocalSocketState socketState = ConnectedState, OpenMode openMode = ReadWrite)
qintptr socketDescriptor() const
LocalSocketState state() const
bool waitForConnected(int msecs = 30000)
bool waitForDisconnected(int msecs = 30000)

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

virtual qint64 bytesAvailable() const
virtual qint64 bytesToWrite() const
virtual bool canReadLine() const
virtual void close()
virtual bool isSequential() const
virtual bool open(OpenMode openMode = ReadWrite)
virtual bool waitForBytesWritten(int msecs = 30000)
virtual bool waitForReadyRead(int msecs = 30000)
  • 33 открытых функций унаследовано от QIODevice
  • 31 открытых функций унаследовано от QObject

Сигналы

void connected()
void disconnected()
void error(QLocalSocket::LocalSocketError socketError)
void stateChanged(QLocalSocket::LocalSocketState socketState)
  • 4 сигнала унаследовано от QIODevice
  • 2 сигнала унаследовано от QObject

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

virtual qint64 readData(char *data, qint64 c)
virtual qint64 writeData(const char *data, qint64 c)
  • 5 защищённых функций унаследовано от QIODevice
  • 9 защищённых функций унаследовано от QObject

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

  • 1 свойство унаследовано от QObject
  • 1 открытый слот унаследован от QObject
  • 11 статических открытых членов унаследовано от QObject
  • 5 защищённых функций унаследовано от QIODevice
  • 9 защищённых функций унаследовано от QObject

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

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

В Windows это именованная пайп, а в Unix — локальный сокет домена.

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

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

См. также QLocalServer.

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

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

Перечисление LocalSocketError представляет ошибки, которые могут возникнуть. Последнюю ошибку можно получить, вызвав 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().

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

QLocalSocket::QLocalSocket(QObject *parent = Q_NULLPTR)

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

QLocalSocket::~QLocalSocket()

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

void QLocalSocket::abort()

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

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

qint64 QLocalSocket::bytesAvailable() const

Переопределено из QIODevice::bytesAvailable().

qint64 QLocalSocket::bytesToWrite() const

Переопределено из QIODevice::bytesToWrite().

bool QLocalSocket::canReadLine() const

Переопределено из QIODevice::canReadLine().

void QLocalSocket::close()

Переопределено из QIODevice::close().

void QLocalSocket::connectToServer(OpenMode openMode = ReadWrite)

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

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

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

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

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

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

Это перегруженная функция.

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

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

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

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

void QLocalSocket::connected()

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

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

void QLocalSocket::disconnectFromServer()

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

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

void QLocalSocket::disconnected()

Этот сигнал испускается при разъединении сокета.

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

LocalSocketError QLocalSocket::error() const

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

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

void QLocalSocket::error(QLocalSocket::LocalSocketError socketError)

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

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

Примечание: Сигнал error перегружен в этом классе. Чтобы подключиться к нему с помощью синтаксиса указателя функции, вы должны указать тип сигнала в static_cast, как показано в этом примере:

connect(localSocket, static_cast<void(QLocalSocket::*)(QLocalSocket::LocalSocketError)>(&QLocalSocket::error),
    [=](QLocalSocket::LocalSocketError socketError){ /* ... */ });

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

bool QLocalSocket::flush()

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

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

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

QString QLocalSocket::fullServerName() const

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

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

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

[virtual] bool QLocalSocket::isSequential() const

Переопределено из QIODevice::isSequential().

bool QLocalSocket::isValid() const

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

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

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

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

Переопределено из QIODevice::open().

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

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

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

qint64 QLocalSocket::readBufferSize() const

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

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

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

Переопределено из QIODevice::readData().

QString QLocalSocket::serverName() const

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

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

void QLocalSocket::setReadBufferSize(qint64 size)

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

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

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

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

void QLocalSocket::setServerName(const QString &name)

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

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

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

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

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

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

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

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

qintptr QLocalSocket::socketDescriptor() const

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

Дескриптор сокета недоступен, когда QLocalSocket находится в состоянии UnconnectedState.

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

LocalSocketState QLocalSocket::state() const

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

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

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

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

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

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

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

Переопределено из QIODevice::waitForBytesWritten().

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. В случае возврата false, вы можете вызвать error() для определения причины ошибки.

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

socket->disconnectFromServer();
if (socket->waitForDisconnected(1000))
    qDebug("Disconnected!");

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

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

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

Переопределено из QIODevice::waitForReadyRead().

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

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

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

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

Переопределено из QIODevice::writeData().

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

Spec-Zone.ru

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