Spec-Zone.ru › Qt 5.6

Класс QTcpServer

Класс QTcpServer предоставляет серверную функциональность на основе протокола TCP. Подробнее...

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

Примечание: Все функции в этом классе являются перевходовыми.

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

QTcpServer(QObject *parent = Q_NULLPTR)
virtual ~QTcpServer()
void close()
QString errorString() const
virtual bool hasPendingConnections() const
bool isListening() const
bool listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0)
int maxPendingConnections() const
virtual QTcpSocket * nextPendingConnection()
void pauseAccepting()
QNetworkProxy proxy() const
void resumeAccepting()
QHostAddress serverAddress() const
QAbstractSocket::SocketError serverError() const
quint16 serverPort() const
void setMaxPendingConnections(int numConnections)
void setProxy(const QNetworkProxy &networkProxy)
bool setSocketDescriptor(qintptr socketDescriptor)
qintptr socketDescriptor() const
bool waitForNewConnection(int msec = 0, bool *timedOut = Q_NULLPTR)
  • 31 открытых функций унаследовано от QObject

Сигналы

void acceptError(QAbstractSocket::SocketError socketError)
void newConnection()
  • 2 сигнала унаследовано от QObject

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

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

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

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

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

Класс QTcpServer предоставляет серверную функциональность на основе протокола TCP.

Этот класс позволяет принимать входящие подключения TCP. Можно указать порт или позволить QTcpServer выбрать его автоматически. Можно слушать на определённом адресе или на всех адресах машины.

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

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

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

Во время прослушивания подключений адрес и порт, на которых сервер прослушивает, доступны как serverAddress() и serverPort().

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

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

См. также QTcpSocket, Пример сервера Fortune, Пример потокового сервера Fortune, Пример обратной связи и Пример Torrent.

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

QTcpServer::QTcpServer(QObject *parent = Q_NULLPTR)

Создаёт объект QTcpServer.

parent передаётся конструктору QObject.

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

[virtual] QTcpServer::~QTcpServer()

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

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

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

[signal] void QTcpServer::acceptError(QAbstractSocket::SocketError socketError)

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

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

См. также pauseAccepting() и resumeAccepting().

[protected] void QTcpServer::addPendingConnection(QTcpSocket *socket)

Эта функция вызывается QTcpServer::incomingConnection() для добавления socket в список ожидающих входящих подключений.

Примечание: Не забудьте вызвать этот член из переопределённой incomingConnection(), если вы не хотите нарушать механизм ожидающих подключений.

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

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

void QTcpServer::close()

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

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

QString QTcpServer::errorString() const

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

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

[virtual] bool QTcpServer::hasPendingConnections() const

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

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

[virtual protected] void QTcpServer::incomingConnection(qintptr socketDescriptor)

Эта виртуальная функция вызывается QTcpServer, когда доступна новая подключение. Аргумент socketDescriptor — это дескриптор системного сокета принятого подключения.

Базовая реализация создает QTcpSocket, устанавливает дескриптор сокета и затем сохраняет QTcpSocket в внутреннем списке ожидающих подключений. Наконец, испускается сигнал newConnection().

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

Если этот сервер использует QNetworkProxy, то socketDescriptor может быть непригоден для использования с функциями системных сокетов и должен использоваться только с QTcpSocket::setSocketDescriptor().

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

Примечание: Если вы хотите обработать входящее подключение как новый объект QTcpSocket в другом потоке, вы должны передать socketDescriptor в другой поток и создать там объект QTcpSocket, а затем использовать его метод setSocketDescriptor().

См. также newConnection(), nextPendingConnection() и addPendingConnection().

bool QTcpServer::isListening() const

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

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

bool QTcpServer::listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0)

Указывает серверу прослушивать входящие подключения по адресу address и порту port. Если port равно 0, порт выбирается автоматически. Если address равно QHostAddress::Any, сервер будет прослушивать все сетевые интерфейсы.

Возвращает true при успехе; в противном случае возвращает false.

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

int QTcpServer::maxPendingConnections() const

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

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

[signal] void QTcpServer::newConnection()

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

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

[virtual] QTcpSocket *QTcpServer::nextPendingConnection()

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

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

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

Примечание: Возвращаемый объект QTcpSocket нельзя использовать из другого потока. Если вы хотите использовать входящее подключение из другого потока, вам необходимо переопределить incomingConnection().

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

void QTcpServer::pauseAccepting()

Приостанавливает прием новых подключений. Очередные подключения останутся в очереди.

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

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

QNetworkProxy QTcpServer::proxy() const

Возвращает сетевой прокси для этого сокета. По умолчанию используется QNetworkProxy::DefaultProxy.

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

См. также setProxy() и QNetworkProxy.

void QTcpServer::resumeAccepting()

Возобновляет прием новых подключений.

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

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

QHostAddress QTcpServer::serverAddress() const

Возвращает адрес сервера, если сервер прослушивает подключения; в противном случае возвращает QHostAddress::Null.

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

QAbstractSocket::SocketError QTcpServer::serverError() const

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

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

quint16 QTcpServer::serverPort() const

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

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

void QTcpServer::setMaxPendingConnections(int numConnections)

Устанавливает максимальное количество ожидающих принятых подключений на numConnections. QTcpServer примет не более numConnections входящих подключений до вызова nextPendingConnection(). По умолчанию ограничение составляет 30 ожидающих подключений.

Клиенты по-прежнему смогут подключиться после того, как сервер достигнет максимального числа ожидающих подключений (т.е., QTcpSocket по-прежнему может испустить сигнал connected()). QTcpServer прекратит прием новых подключений, но операционная система может сохранить их в очереди.

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

void QTcpServer::setProxy(const QNetworkProxy &networkProxy)

Устанавливает явный сетевой прокси для этого сокета на networkProxy.

Чтобы отключить использование прокси для этого сокета, используйте тип прокси QNetworkProxy::NoProxy:

server->setProxy(QNetworkProxy::NoProxy);

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

См. также proxy() и QNetworkProxy.

bool QTcpServer::setSocketDescriptor(qintptr socketDescriptor)

Устанавливает дескриптор сокета, который этот сервер должен использовать при прослушивании входящих подключений, на socketDescriptor. Возвращает true если сокет установлен успешно; в противном случае возвращает false.

Предполагается, что сокет находится в состоянии прослушивания.

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

qintptr QTcpServer::socketDescriptor() const

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

Если сервер использует QNetworkProxy, возвращаемый дескриптор может быть непригоден для использования с функциями системных сокетов.

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

bool QTcpServer::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/archives/qt-5.6/qtcpserver.html

Spec-Zone.ru

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