Spec-Zone.ru › Qt 5.13

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, Пример потокового сервера Fortune, Пример 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.13/qtcpserver.html

Spec-Zone.ru

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