Spec-Zone.ru › Qt 5.9

Класс QTcpServer

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

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

QSctpServer

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

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

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

QTcpServer(QObject *parent = Q_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 = Q_NULLPTR)
  • 32 открытых функции унаследованы от QObject

Сигналы

void ошибкаПриёма(QAbstractSocket::SocketError socketError)
void новоеПодключение()
  • 2 сигнала унаследованы от QObject

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

void добавитьОжидающееПодключение(QTcpSocket *socket)
virtual void входящееПодключение(qintptr socketDescriptor)
  • 9 защищённых функций унаследованы от QObject

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

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

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

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

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

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

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

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

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

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

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

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

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

QTcpServer::QTcpServer(QObject *parent = Q_NULLPTR)

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

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

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

[virtual] QTcpServer::~QTcpServer()

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

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

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

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

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

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

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

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

См. также 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/qt-5.9/qtcpserver.html

Spec-Zone.ru

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