Spec-Zone.ru › Qt 5.14

Класс QTcpServer

Класс QTcpServer предоставляет сервер на основе TCP. Подробнее...

Заголовок: #include <QTcpServer>
qmake: QT += network
Наследуется от: QObject
Наследует:

QSctpServer

  • Список всех членов, включая унаследованные

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

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

QTcpServer(QObject *parent = nullptr)
virtual ~QTcpServer()
void закрыть()
QString описание_ошибки() const
virtual bool имеет_ожидающие_соединения() const
bool прослушивает() const
bool прослушивать(const QHostAddress &address = QHostAddress::Any, quint16 port = 0)
int максимум_ожидающих_соединений() const
virtual QTcpSocket * следующее_ожидающее_соединение()
void приостановить_прием()
QNetworkProxy прокси() const
void возобновить_прием()
QHostAddress адрес_сервера() const
QAbstractSocket::SocketError ошибка_сервера() const
quint16 порт_сервера() const
void установить_макс_ожидающих_соединений(int numConnections)
void установить_прокси(const QNetworkProxy &networkProxy)
bool установить_дескриптор_сокета(qintptr socketDescriptor)
qintptr дескриптор_сокета() const
bool подождать_новое_соединение(int msec = 0, bool *timedOut = nullptr)

Сигналы

void ошибка_принятия(QAbstractSocket::SocketError socketError)
void новое_соединение()

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

void добавить_ожидающее_соединение(QTcpSocket *socket)
virtual void входящее_соединение(qintptr socketDescriptor)

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

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

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

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

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

При прослушивании соединений адрес и порт, на которых сервер прослушивает, доступны как адрес_сервера() и порт_сервера().

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

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

См. также QTcpSocket, Пример Fortune Server, Пример Threaded Fortune Server, Пример Loopback и Пример Torrent.

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

QTcpServer::QTcpServer(QObject *parent = nullptr)

Конструктор объекта QTcpServer.

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

См. также прослушивать() и установить_дескриптор_сокета().

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

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

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

См. также приостановить_прием() и возобновить_прием().

[signal] void QTcpServer::newConnection()

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

См. также имеет_ожидающие_соединения() и следующее_ожидающее_соединение().

[virtual] QTcpServer::~QTcpServer()

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

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

См. также закрыть().

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

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

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

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

См. также входящее_соединение().

void QTcpServer::close()

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

См. также прослушивать().

QString QTcpServer::errorString() const

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

См. также ошибка_сервера().

[virtual] bool QTcpServer::hasPendingConnections() const

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

См. также следующее_ожидающее_соединение() и установить_макс_ожидающих_соединений().

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

[virtual] QTcpSocket *QTcpServer::nextPendingConnection()

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

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

nullptr возвращается, если этот метод вызывается, когда ожидающих подключений нет.

Примечание: Возвращённый объект 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 = nullptr)

Ожидает не более msec миллисекунд или пока не станет доступным входящее соединение. Возвращает true если доступно соединение; в противном случае возвращает false. Если операция завершилась по истечении времени ожидания и timedOut не nullptr, *timedOut будет установлено в true.

Это блокирующий вызов функции. Его использование не рекомендуется в приложении с графическим интерфейсом пользователя в одном потоке, так как всё приложение перестанет реагировать, пока функция не вернёт результат. 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.14/qtcpserver.html

Spec-Zone.ru

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