Spec-Zone.ru › Qt 5.12

Класс 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)
  • 31 открытая функция, унаследованная от QObject

Сигналы

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

Статические открытые члены

const QMetaObject staticMetaObject
  • 9 статических открытых членов, унаследованных от QObject

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[virtual] QTcpServer::QTcpServer(QObject *parent = 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()

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

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

END_OF_DOCUMENT_MARKER

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 = 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.12/qtcpserver.html

Spec-Zone.ru

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