Описание класса QAbstractSocket
|
enum | NetworkLayerProtocol { IPv4Protocol, IPv6Protocol, UnknownNetworkLayerProtocol } |
enum | SocketError { ConnectionRefusedError, RemoteHostClosedError, HostNotFoundError, SocketAccessError, ..., UnknownSocketError } |
enum | SocketOption { LowDelayOption, KeepAliveOption } |
enum | SocketState { UnconnectedState, HostLookupState, ConnectingState, ConnectedState, ..., ListeningState } |
enum | SocketType { TcpSocket, UdpSocket, UnknownSocketType } |
QAbstractSocket ( SocketType socketType, QObject * parent ) | |
virtual | ~QAbstractSocket () |
void | abort () |
void | connectToHost ( const QString & hostName, quint16 port, OpenMode openMode = ReadWrite ) |
void | connectToHost ( const QHostAddress & address, quint16 port, OpenMode openMode = ReadWrite ) |
void | disconnectFromHost () |
SocketError | error () const |
bool | flush () |
bool | isValid () const |
QHostAddress | localAddress () const |
quint16 | localPort () const |
QHostAddress | peerAddress () const |
QString | peerName () const |
quint16 | peerPort () const |
QNetworkProxy | proxy () const |
qint64 | readBufferSize () const |
void | setProxy ( const QNetworkProxy & networkProxy ) |
void | setReadBufferSize ( qint64 size ) |
bool | setSocketDescriptor ( int socketDescriptor, SocketState socketState = ConnectedState, OpenMode openMode = ReadWrite ) |
void | setSocketOption ( QAbstractSocket::SocketOption option, const QVariant & value ) |
int | socketDescriptor () const |
QVariant | socketOption ( QAbstractSocket::SocketOption option ) |
SocketType | socketType () const |
SocketState | state () const |
bool | waitForConnected ( int msecs = 30000 ) |
bool | waitForDisconnected ( int msecs = 30000 ) |
virtual bool | atEnd () const |
virtual qint64 | bytesAvailable () const |
virtual qint64 | bytesToWrite () const |
virtual bool | canReadLine () const |
virtual void | close () |
virtual bool | isSequential () const |
virtual bool | waitForBytesWritten ( int msecs = 30000 ) |
virtual bool | waitForReadyRead ( int msecs = 30000 ) |
void | connected () |
void | disconnected () |
void | error ( QAbstractSocket::SocketError socketError ) |
void | hostFound () |
void | proxyAuthenticationRequired ( const QNetworkProxy & proxy, QAuthenticator * authenticator ) |
void | stateChanged ( QAbstractSocket::SocketState socketState ) |
void | setLocalAddress ( const QHostAddress & address ) |
void | setLocalPort ( quint16 port ) |
void | setPeerAddress ( const QHostAddress & address ) |
void | setPeerName ( const QString & name ) |
void | setPeerPort ( quint16 port ) |
void | setSocketError ( SocketError socketError ) |
void | setSocketState ( SocketState state ) |
virtual qint64 | readData ( char * data, qint64 maxSize ) |
virtual qint64 | readLineData ( char * data, qint64 maxlen ) |
virtual qint64 | writeData ( const char * data, qint64 size ) |
void | connectToHostImplementation ( const QString & hostName, quint16 port, OpenMode openMode = ReadWrite ) |
void | disconnectFromHostImplementation () |
Класс QAbstractSocket предоставляет возможности, общие для сокетов всех типов.
Класс QAbstractSocket является базовым для классов QTcpSocket и QUdpSocket и содержит все возможности, общие для этих двух классов. Если вам требуется сокет, вы можете сделать одно из двух:
TCP (Transmission Control Protocol) представляет собой надежный, потокоориентированный, основывающийся на соединениях транспортный протокол. UDP (User Datagram Protocol) представляет собой ненадежный, датаграммный транспортный протокол без соединений. На практике это означает, что протокол TCP более приспособлен для непрерывной передачи данных, в то время как более "легкий" протокол UDP можно использовать там, где надежность менее важна.
API класса QAbstractSocket унифицирует большинство различий между этими протоколами. Например, хотя протокол UDP соединений не поддерживает, функция connectToHost() создает виртуальное соединение для UDP-сокетов, что дает возможность пользоваться объектом класса QAbstractSocket более или менее одинаковым образом вне зависимости от используемого протокола. Технически QAbstractSocket запоминает адрес и порт, переданные функции connectToHost(), а функции вроде read() и write() будут потом использовать эти значения.
В любой момент времени объект класса QAbstractSocket находится в некотором состоянии (его возвращает функция state()). Начальным состоянием является UnconnectedState. После вызова connectToHost(), сокет переходит в состояние HostLookupState. Если узел найден, объект QAbstractSocket переходит в состояние ConnectingState и посылает сигнал hostFound(). Когда соединение установлено, он переходит в состояние ConnectedState и посылает connected(). Если на любом из этих шагов происходит ошибка, посылается сигнал error(). Всякий раз, когда состояние изменяется, посылается сигнал stateChanged(). Для удобства имеется функция isValid(), которая возвращает true, если сокет готов для чтения и записи, но учтите, что прежде, чем чтение или запись можно будет производить, сокет должен находиться в состоянии ConnectedState.
Производите чтение или запись с помощью вызова read() или write() или используйте вспомогательные функции readLine() и readAll(). QAbstractSocket также наследует getChar(), putChar() и ungetChar() от QIODevice, который работает с отдельными байтами. Сигнал bytesWritten() испускается когда данные записаны в сокет (т.е., когда клиент прочитает данные). Обратите внимание на то, что Qt не ограничивает размер буфера записи. Вы можете следить за его размером перехватывая сигнал.
Сигнал readyRead() испускается каждый раз, когда новая порция данных приходит. Тогда bytesAvailable() возвращает число байт, доступных для чтения. Обычно вы соединяетесь с сигналом readyRead() слотом и читаете все доступные данные. Если вы не хотите читать все данные за один раз, оставшееся всегда доступно позже, всё, что приходит потом присоединяется к накопленному в буфере чтения QAbstractSocket'а. Для ограничения буфера чтения, вызовите setReadBufferSize().
Для закрытия сокета, вызовите disconnectFromHost(). QAbstractSocket enters QAbstractSocket::ClosingState. После того, как все необходимые данные были записаны в сокет, QAbstractSocket закрывает соединение, устанавливает QAbstractSocket::ClosedState и высылает disconnected(). Если вы хотите отменить соединение немедленно с откатом всех переданных данных, используйте abort(). Если удалённый узел закрывает соединение, QAbstractSocket вышлет ошибку(QAbstractSocket::RemoteHostClosedError), в то время как состояние сокета будет ConnectedState, а потом будет выслан сигнал disconnected().
Порт и адрес соединённого узла доступны с помощью peerPort() и peerAddress(). peerName() возвращает имя узла, как оно определено connectToHost(). localPort() и localAddress() возвращают порт и адрес локального сокета.
QAbstractSocket обеспечивает набор функций, которые приостанавливают обращения к потоку, пока определённый сигнал не будет послан. Эти функции могут быть использованы для реализации блокируемых сокетов:
Покажем на примере:
int numRead = 0, numReadTotal = 0;
char buffer[50];
forever {
numRead = socket.read(buffer, 50);
// сделать что-то с массивом
numReadTotal += numRead;
if (numRead == 0 && !socket.waitForReadyRead())
break;
}
Если waitForReadyRead() возвращает false, соединение закрылось или произошла ошибка.
Программирование с блокируемыми сокетами радикально отличается от работы с обычными сокетами. Блокируемые сокеты не требуют зацикливания событий и обычно помогает писать более простой код. Однако в GUI приложении они могут быть использованы только с не-GUI потоками, чтобы избежать замораживания графического интерфейса. Смотрите примеры network/fortuneclient и network/blockingfortuneclient, где реализованы оба подхода.
Замечание: Мы не одобряем использование блокирующих функций вместе с сигналами. Использовать нужно только одну из двух возмоностей.
QAbstractSocket может быть использован с операциями потоков QTextStream и QDataStream (operator<<() и operator>>()). Существует одна особенность, которую следует знать: вы должны убедиться, что достаточно доступных для чтения данных, чтобы использовать операцию operator>>().
Смотрите также QFtp, QNetworkAccessManager и QTcpServer.
Это перечисление описывает какие версии протокола на межсетевом уровне используются в Qt.
Константа | Значение | Описание |
---|---|---|
QAbstractSocket::IPv4Protocol | 0 | IPv4 |
QAbstractSocket::IPv6Protocol | 1 | IPv6 |
QAbstractSocket::UnknownNetworkLayerProtocol | -1 | Отличный от IPv4 и IPv6 |
Смотрите также QHostAddress::protocol().
Это перечисление описывает ошибки, которые случаются при работе с сокетами.
Константа | Значение | Описание |
---|---|---|
QAbstractSocket::ConnectionRefusedError | 0 | Соединение было разорвано другим узлом (или по тайм-ауту). |
QAbstractSocket::RemoteHostClosedError | 1 | Удалённый узел закрыл соединение. Помните, что сокет клиента (например, текущий сокет) будет закрыт после отправления удалённого уведомления. |
QAbstractSocket::HostNotFoundError | 2 | Адрес узла не найден. |
QAbstractSocket::SocketAccessError | 3 | Операция с сокетом была прервана, так как приложение не получило необходимых прав. |
QAbstractSocket::SocketResourceError | 4 | У текущей системы не хватило ресурсов (например, слишком много сокетов). |
QAbstractSocket::SocketTimeoutError | 5 | Время для операции с сокетом истекло. |
QAbstractSocket::DatagramTooLargeError | 6 | Дейтаграмма больше, чем установленное ограничение в операционной системе (которое может быть меньше, чем 8192 байт). |
QAbstractSocket::NetworkError | 7 | Произошла ошибка в сети (например, сетевой кабель был неожиданно отключён). |
QAbstractSocket::AddressInUseError | 8 | Адрес, определённый в QUdpSocket::bind(), уже используется и установлен в состояние эксклюзивного использования. |
QAbstractSocket::SocketAddressNotAvailableError | 9 | Адрес, определённый в QUdpSocket::bind(), не найден на узле. |
QAbstractSocket::UnsupportedSocketOperationError | 10 | Запрашиваемая операция с сокетом не поддерживается текущей операционной системой (например, отсутствует поддержка IPv6). |
QAbstractSocket::ProxyAuthenticationRequiredError | 12 | Сокет использует прокси, который запрашивает аутентификацию. |
QAbstractSocket::SslHandshakeFailedError | 13 | Подтверждение связи SSL/TLS завершилось неудачей, поэтому соединение будет закрыто (используется только в QSslSocket) |
QAbstractSocket::UnfinishedSocketOperationError | 11 | Используется только QAbstractSocketEngine, Последняя неудачная операция еще не завершена (продолжает выполняться в фоне). |
QAbstractSocket::ProxyConnectionRefusedError | 14 | Невозможно связаться с прокси-сервером, поскольку соединение к этому серверу было запрещено |
QAbstractSocket::ProxyConnectionClosedError | 15 | Соединение с прокси-сервером было неожиданно закрыто (до того как соединение с последним узлом было установлено) |
QAbstractSocket::ProxyConnectionTimeoutError | 16 | Время соединения с прокси-сервером истекло или прокси-сервер остановил ответ на фазе аутентификации. |
QAbstractSocket::ProxyNotFoundError | 17 | Адрес прокси установлен с помощью setProxy() (или приложение-прокси) не был найден. |
QAbstractSocket::ProxyProtocolError | 18 | Согласование соединения с прокси-сервером, поскольку ответ прокси-сервера нельзя понять. |
QAbstractSocket::UnknownSocketError | -1 | Произошла неопределённая ошибка. |
Смотрите также QAbstractSocket::error().
Данное перечисление представляет опции, которые могут быть установлены у сокета. Если требуется, они могут установить после получения сигнала connected() от сокета или после получения нового сокета от QTcpServer.
Константа | Значение | Описание |
---|---|---|
QAbstractSocket::LowDelayOption | 0 | Пытается оптимизировать сокет для уменьшения времени ожидания. Для QTcpSocket будет установлена опция TCP_NODELAY и отключён алгоритм Nagle. Установите равной 1 для включения. |
QAbstractSocket::KeepAliveOption | 1 | Установите равным 1 для включения опции сокета SO_KEEPALIVE |
Данное перечисление было введено в Qt 4.6.
Смотрите также QAbstractSocket::setSocketOption() и QAbstractSocket::socketOption().
Это перечисление описывает различные состояния сокета.
Константа | Значение | Описание |
---|---|---|
QAbstractSocket::UnconnectedState | 0 | Сокет не соединён. |
QAbstractSocket::HostLookupState | 1 | Сокет выполняет поиск имени узла. |
QAbstractSocket::ConnectingState | 2 | Сокет начинает устанавливать соединение. |
QAbstractSocket::ConnectedState | 3 | Соединение установлено. |
QAbstractSocket::BoundState | 4 | Сокет связан с адресом и портом (для серверов). |
QAbstractSocket::ClosingState | 6 | Сокет готовится к закрытию (данные всё ещё ожидают записи). |
QAbstractSocket::ListeningState | 5 | Только для внутреннего использования. |
Смотрите также QAbstractSocket::state().
Это перечисление описывает протокол транспортного уровня.
Константа | Значение | Описание |
---|---|---|
QAbstractSocket::TcpSocket | 0 | TCP |
QAbstractSocket::UdpSocket | 1 | UDP |
QAbstractSocket::UnknownSocketType | -1 | Отличный от TCP и UDP |
Смотрите также QAbstractSocket::socketType().
Создаёт новый абстрактный сокет типа socketType. Аргумент parent передаётся конструктору QObject.
Смотрите также socketType(), QTcpSocket и QUdpSocket.
Уничтожает сокет.
Закрывает текущее соединение и перезагружает сокет. В отличие от disconnectFromHost(), эта функция немедленно закрывает сокет, очищая буфер записи.
Смотрите также disconnectFromHost() и close().
Переопределено из QIODevice::atEnd().
Возвращает true если в настоящее время больше нет данных, доступных для чтения; в противном случае возвратит false.
Чаще всего эта функция используется когда в цикле читаются данные из сокета. Например:
// Этот слот соединен с QAbstractSocket::readyRead()
void SocketClass::readyReadSlot()
{
while (!socket.atEnd()) {
QByteArray data = socket.read(100);
....
}
}
Смотрите также bytesAvailable() и readyRead().
Переопределено из QIODevice::bytesAvailable().
Возвращает число присланных байт, которые ждут прочтения.
Смотрите также bytesToWrite() и read().
Переопределено из QIODevice::bytesToWrite().
Возвращает число байт, которые ждут отправки. Байты будут отосланы, когда управление вернётся обратно, или при вызове flush().
Смотрите также bytesAvailable() и flush().
Переопределено из QIODevice::canReadLine().
Возвращает true, если строка данных может быть прочитана из сокета; в противном случает возвращает false.
Смотрите также readLine().
Переопределено из QIODevice::close().
Закрывает устройство ввода/вывода для сокета, разъединяет соединения сокета с узлом, закрывает сокет и сбрасывает имя, адрес, номер порта и дескриптор базового сокет.
Описание действий, которые происходят когда устройство ввода/вывод закрывается смотрите QIODevice::close().
Смотрите также abort().
Пытается создать соединение с узлом hostName по порту port.
Сокет открывается по переданному openMode и сначала переходит в HostLookupState, затем выполняет поиск hostName. Если поиск завершился успешно, посылается hostFound() и QAbstractSocket переходит в состояние ConnectingState. Затем он пытается соединиться по адресу, полученному в результате поиска. В итоге, если соединение установлено, QAbstractSocket переходит в состояние ConnectedState и посылает сигнал connected().
На любом шаге сокет может отправить сигнал об ошибке error().
hostName может быть как IP-адресом в виде строки (например, "43.195.83.32"), так и именем узла (например, "example.com"). QAbstractSocket будет совершать поиск, только если это необходимо. port представляется в текущей степени байта.
Смотрите также state(), peerName(), peerAddress(), peerPort() и waitForConnected().
Это перегруженная функция.
Пытается создать соединение с address по порту port.
Содержит реализацию connectToHost().
Пытается создать соединение с узлом hostName по порту port. Сокет открывается в режиме openMode.
Эта функция была введена в Qt 4.1.
Этот сигнал испускается после того, как connectToHost() была вызвана и соединение было успешно установлено.
Замечание: В некоторых операционных системах сигнал connected() может быть непосредственно отправлен из вызова connectToHost() для соединения с localhost.
Смотрите также connectToHost() и disconnected().
Попытка закрыть сокет. Если есть данные для записи, QAbstractSocket перейдёт в состояние ClosingState и будет ждать, пока данные не будут переданы. В конце концов, он перейдёт в состояние UnconnectedState и пошлёт сигнал disconnected().
Смотрите также connectToHost().
Содержит реализацию disconnectFromHost().
Эта функция была введена в Qt 4.1.
Этот сигнал посылается, когда сокет разрывает соединение.
Предупреждение: Если в соединенном с ним слоте нужно удалить sender() этого сигнала, то используйте функцию deleteLater().
Смотрите также connectToHost(), disconnectFromHost() и abort().
Возвращает тип последней произошедшей ошибки.
Смотрите также state() и errorString().
Этот сигнал посылается после того, как произошла ошибка. Параметр socketError описывает тип ошибки.
QAbstractSocket::SocketError - незарегистрированный метатип, поэтому для соединений через очереди вы будете регистрировать его с помощью Q_DECLARE_METATYPE() и qRegisterMetaType().
Смотрите также error(), errorString() и Создание пользовательских типов Qt.
Эта функция передаёт по основному сетевому сокету столько байт из внутреннего буфера записи, сколько это возможно без блокировки. Если данные были записаны, функция вернёт true; в противном случае возвращается false.
Вызывайте эту функцию, если вам необходимо немедленно отправить данные по QAbstractSocket. Число переданный байт будет зависеть от операционной системы. В большинстве случаев вызывать эту функцию нет необходимости, так как QAbstractSocket начинает отправку данных автоматически, как только к нему переходит управление. Если этого не происходит, лучше вызывайте waitForBytesWritten() вместо текущей функции.
Смотрите также write() и waitForBytesWritten().
Этот сигнал посылается после вызова connectToHost() и успешного завершения поиска.
Замечание: Начиная с Qt 4.6.3 QAbstractSocket может отправить hostFound() непосредственно из вызова connectToHost() поскольку результат DNS может быть кэширован.
Смотрите также connected().
Переопределено из QIODevice::isSequential().
Возвращает true, если сокет корректен и готов к использованию; в противном случае возвращает false.
Замечание: Состояние сокета должно быть ConnectedState до того, как будет произведено чтение или запись.
Смотрите также state().
Возвращает адрес узла локального сокета, если это возможно; если нет, возвращает QHostAddress::Null.
Как правило, это главный IP-адрес узла, но может являться и QHostAddress::LocalHost (127.0.0.1) для соединений локального узла.
Смотрите также localPort(), peerAddress() и setLocalAddress().
Возвращает порт узла (в родном байтовом виде) локального сокета, если он доступен; если нет, возвращается 0.
Смотрите также localAddress(), peerPort() и setLocalPort().
Возвращает адрес присоединённого узла, если сокет находится в состоянии ConnectedState; в противном случае возвращает QHostAddress::Null.
Смотрите также peerName(), peerPort(), localAddress() и setPeerAddress().
Возвращает имя присоединённого узла, определённого в connectToHost(), или пустую строку QString, если connectToHost() был закрыт.
Смотрите также peerAddress(), peerPort() и setPeerName().
Возвращает порт присоединённого узла, если сокет находится в ConnectedState; в противном случае возвращает 0.
Смотрите также peerAddress(), localPort() и setPeerPort().
Возвращает сетевой прокси для данного сокета. По умолчанию использует QNetworkProxy::DefaultProxy, что означает что этот сокет будет запрашивать для приложения настройки прокси.
Эта функция была введена в Qt 4.1.
Смотрите также setProxy(), QNetworkProxy и QNetworkProxyFactory.
Этот сигнал посылается, когда используется прокси proxy, требующий аутентификации. Объект authenticator может быть заполнен необходимыми сведениями для продолжения соединения.
Замечание: невозможно использовать QueuedConnection для подключения к этому сигналу, так как соединение не удастся установить без заполнения информации для аутентификации при возвращении сигнала.
Эта функция была введена в Qt 4.3.
Смотрите также QAuthenticator и QNetworkProxy.
Возвращает размер внутреннего буфера чтения. Это ограничение определяет, какой объём данных может получить клиент, прежде чем вы вызовите read() или readAll().
Размер, равный 0 (по умолчанию), означает, что буфер не ограничен, что позволяет быть уверенным в том, что данные не потеряются.
Смотрите также setReadBufferSize() и read().
Переопределено из QIODevice::readData().
Переопределено из QIODevice::readLineData().
Устанавливает адрес локальной стороны соединения в address.
Вы можете вызывать эту функцию в подклассе QAbstractSocket для изменения возвращаемого значения функцией localAddress() после установления соединения. Эта функциональность также используется в прокси соединениях для создания виртуальных настроек соединения.
Помните, что эта функция не связывает локальный адрес сокета до соединения (например, QUdpSocket::bind()).
Эта функция была введена в Qt 4.1.
Смотрите также localAddress(), setLocalPort() и setPeerAddress().
Устанавливает локальный порт соединения в port.
Вы можете вызывать эту функцию в подклассе QAbstractSocket для изменения возвращаемого значения функцией localPort() после установления соединения. Эта функциональность также используется в прокси соединениях для создания виртуальных настроек соединения.
Помните, что эта функция не связывает локальный порт сокета до соединения (например, QUdpSocket::bind()).
Эта функция была введена в Qt 4.1.
Смотрите также localPort(), localAddress(), setLocalAddress() и setPeerPort().
Устанавливает адрес удалённой стороны соединения в address.
Вы можете вызывать эту функцию в подклассе QAbstractSocket для изменения возвращаемого значения функцией peerAddress() после установления соединения. Эта функциональность также используется в прокси соединениях для создания виртуальных настроек соединения.
Эта функция была введена в Qt 4.1.
Смотрите также peerAddress(), setPeerPort() и setLocalAddress().
Устанавливает имя удалённого узла в name.
Вы можете вызывать эту функцию в подклассе QAbstractSocket для изменения возвращаемого значения функцией peerName() после установления соединения. Эта функциональность также используется в прокси соединениях для создания виртуальных настроек соединения.
Эта функция была введена в Qt 4.1.
Смотрите также peerName().
Устанавливает порт удалённой стороны соединения в port.
Вы можете вызывать эту функцию в подклассе QAbstractSocket для изменения возвращаемого значения функцией peerPort() после установления соединения. Эта функциональность также используется в прокси соединениях для создания виртуальных настроек соединения.
Эта функция была введена в Qt 4.1.
Смотрите также peerPort(), setPeerAddress() и setLocalPort().
Устанавливает явно сетевой прокси для текущего сокета в networkProxy.
Для выключения использования прокси для текущего сокета используйте тип прокси QNetworkProxy::NoProxy:
socket->setProxy(QNetworkProxy::NoProxy);
Значение по умолчанию для прокси равно QNetworkProxy::DefaultProxy, что означает что сокет будет использовать настройки приложения: если прокси установлен с помощью QNetworkProxy::setApplicationProxy, он будет использовать это; в противном случае, если фабрика установлена с помощью QNetworkProxyFactory::setApplicationProxyFactory, она будет запрашивать эту фабрику с помощью типа QNetworkProxyQuery::TcpSocket.
Эта функция была введена в Qt 4.1.
Смотрите также proxy(), QNetworkProxy и QNetworkProxyFactory::queryProxy().
Устанавливает размер буфера QAbstractSocket чтения равным size байт.
Если установлен предел размера буфера, QAbstractSocket не будет помещать в буфер больше данных, чем этот предел. В частности, если размер буфер установлен как 0, предел не установлен, все поступающие данные буферизируются. Это значение по умолчанию.
Эта опция полезна, если вы хотите только читать данные в определённое время (например, в случае с потоковым приложением реального времени) или вы хотите защитить сокет от переполнения, что может привести к нехватке памяти.
Только QTcpSocket использует внутренний буфер QAbstractSocket; QUdpSocket не использует буферизацию вовсе, а скорее основывается на возможностях буферизации операционной системы. Потому вызов функции QUdpSocket не вызовет никакого эффекта.
Смотрите также readBufferSize() и read().
Инициализирует QAbstractSocket с родным дескриптором сокета socketDescriptor. Возвращает true, если socketDescriptor принят как валидный; в противном случае возвращает false. Сокет открывается в режиме, определённом в openMode, и переводится в состояние, определённое в socketState.
Замечание: невозможно инициализировать два абстрактных сокета с одинаковыми родными дескрипторами.
Смотрите также socketDescriptor().
Устанавливает тип последней произошедшей ошибки в socketError.
Смотрите также setSocketState() и setErrorString().
Устанавливает заданную опцию option равным значению, описываемым значением value.
Эта функция была введена в Qt 4.6.
Смотрите также socketOption().
Устанавливает состояние сокета в state.
Смотрите также state().
Возвращает родной дескриптор сокета объекта QAbstractSocket, если он доступен; в противном случае возвращает -1.
Если сокет использует QNetworkProxy, возвращаемый дескриптор может быть недоступен для использования с родными функциями сокета.
Дескриптор сокета недоступен, когда QAbstractSocket находится в состоянии UnconnectedState.
Смотрите также setSocketDescriptor().
Возвращает значение опции option.
Эта функция была введена в Qt 4.6.
Смотрите также setSocketOption().
Возвращает тип сокета (TCP, UDP или другое).
Смотрите также QTcpSocket и QUdpSocket.
Возвращает состояние сокета.
Смотрите также error().
Этот сигнал испускается, когда изменяется состояние сокета QAbstractSocket. Параметр socketState является новым состоянием.
QAbstractSocket::SocketState - незарегистрированный метатип, поэтому для соединений через очереди вы будете регистрировать его с помощью Q_REGISTER_METATYPE() и qRegisterMetaType().
Смотрите также state() и Создание пользовательских типов Qt.
Переопределено из QIODevice::waitForBytesWritten().
Ждёт msecs миллисекунд, пока установится соединение. Если соединение установлено, возвращает true; если нет - false. В случае, если функция возвращает false, вы можете вызвать error() для определения, что за ошибка произошла.
Следующий пример ждёт одну секунду для установления соединения:
socket->connectToHost("imap", 143); if (socket->waitForConnected(1000)) qDebug("Соединено!");
Если задать время тайм-аута как -1, таймер будет отключён.
Замечание: Эта функция может ждать немного дольше чем msecs, в зависимости от времени требуемого для завершения поиска узла.
Замечание: Множественные вызовы этой функции не ведут к сложению времени. Если время ожидания функции вышло, процесс соединения будет прерван.
Смотрите также connectToHost() и connected().
Ждёт msecs миллисекунд, пока сокет разорвёт соединение. Если соединение разорвано, функция возвращает true; если нет - false. В случае, если функция возвращает false, вы можете вызвать error() для определения, что за ошибка произошла.
Следующий пример ждёт до разрыва соединения одну секунду:
socket->disconnectFromHost(); if (socket->state() == QAbstractSocket::UnconnectedState || socket->waitForDisconnected(1000)) qDebug("Отсоединено!");
Если задать время тайм-аута как -1, таймер будет отключён.
Смотрите также disconnectFromHost() и close().
Переопределено из QIODevice::waitForReadyRead().
Эта функция блокирует, пока доступны для чтения новые данные и не будет испущен сигнал readyRead(). Эта функция имеет тайм-аут после msecs миллисекунд; по умолчанию тайм-аут равен 30000 мс.
Функция возвращает true если сигнал readyRead() испущен и имеются новые данные, доступные для чтения; в противном случае она возвращает false (если произойдет ошибка или время выполнения операции истекло).
Смотрите также waitForBytesWritten().
Переопределено из QIODevice::writeData().
Авторские права © 2010 Nokia Corporation и/или её дочерние компании | Торговые марки | Qt 4.6.4 |
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |