Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
QTcpServer Class Reference

The QTcpServer class provides a TCP-based server. More...

#include <qtcpserver.h>

+ Inheritance diagram for QTcpServer:
+ Collaboration diagram for QTcpServer:

Signals

void newConnection ()
 This signal is emitted every time a new connection is available, regardless of whether it has been added to the pending connections queue or not.
 
void pendingConnectionAvailable (QPrivateSignal)
 This signal is emitted every time a new connection has been added to the pending connections queue.
 
void acceptError (QAbstractSocket::SocketError socketError)
 
- Signals inherited from QObject
void destroyed (QObject *=nullptr)
 This signal is emitted immediately before the object obj is destroyed, after any instances of QPointer have been notified, and cannot be blocked.
 
void objectNameChanged (const QString &objectName, QPrivateSignal)
 This signal is emitted after the object's name has been changed.
 

Public Member Functions

 QTcpServer (QObject *parent=nullptr)
 Constructs a QTcpServer object.
 
virtual ~QTcpServer ()
 Destroys the QTcpServer object.
 
bool listen (const QHostAddress &address=QHostAddress::Any, quint16 port=0)
 Tells the server to listen for incoming connections on address address and port port.
 
void close ()
 Closes the server.
 
bool isListening () const
 Returns true if the server is currently listening for incoming connections; otherwise returns false.
 
void setMaxPendingConnections (int numConnections)
 Sets the maximum number of pending accepted connections to numConnections.
 
int maxPendingConnections () const
 Returns the maximum number of pending accepted connections.
 
void setListenBacklogSize (int size)
 Sets the backlog queue size of to be accepted connections to size.
 
int listenBacklogSize () const
 Returns the backlog queue size of to be accepted connections.
 
quint16 serverPort () const
 Returns the server's port if the server is listening for connections; otherwise returns 0.
 
QHostAddress serverAddress () const
 Returns the server's address if the server is listening for connections; otherwise returns QHostAddress::Null.
 
qintptr socketDescriptor () const
 Returns the native socket descriptor the server uses to listen for incoming instructions, or -1 if the server is not listening.
 
bool setSocketDescriptor (qintptr socketDescriptor)
 Sets the socket descriptor this server should use when listening for incoming connections to socketDescriptor.
 
bool waitForNewConnection (int msec=0, bool *timedOut=nullptr)
 Waits for at most msec milliseconds or until an incoming connection is available.
 
virtual bool hasPendingConnections () const
 Returns true if the server has a pending connection; otherwise returns false.
 
virtual QTcpSocketnextPendingConnection ()
 Returns the next pending connection as a connected QTcpSocket object.
 
QAbstractSocket::SocketError serverError () const
 Returns an error code for the last error that occurred.
 
QString errorString () const
 Returns a human readable description of the last error that occurred.
 
void pauseAccepting ()
 
void resumeAccepting ()
 
void setProxy (const QNetworkProxy &networkProxy)
 
QNetworkProxy proxy () const
 
- Public Member Functions inherited from QObject
Q_INVOKABLE QObject (QObject *parent=nullptr)
 Constructs an object with parent object parent.
 
virtual ~QObject ()
 Destroys the object, deleting all its child objects.
 
virtual bool event (QEvent *event)
 This virtual function receives events to an object and should return true if the event e was recognized and processed.
 
virtual bool eventFilter (QObject *watched, QEvent *event)
 Filters events if this object has been installed as an event filter for the watched object.
 
QString objectName () const
 
Q_WEAK_OVERLOAD void setObjectName (const QString &name)
 Sets the object's name to name.
 
void setObjectName (QAnyStringView name)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
QBindable< QStringbindableObjectName ()
 
bool isWidgetType () const
 Returns true if the object is a widget; otherwise returns false.
 
bool isWindowType () const
 Returns true if the object is a window; otherwise returns false.
 
bool isQuickItemType () const
 Returns true if the object is a QQuickItem; otherwise returns false.
 
bool signalsBlocked () const noexcept
 Returns true if signals are blocked; otherwise returns false.
 
bool blockSignals (bool b) noexcept
 If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it).
 
QThreadthread () const
 Returns the thread in which the object lives.
 
bool moveToThread (QThread *thread QT6_DECL_NEW_OVERLOAD_TAIL)
 Changes the thread affinity for this object and its children and returns true on success.
 
int startTimer (int interval, Qt::TimerType timerType=Qt::CoarseTimer)
 This is an overloaded function that will start a timer of type timerType and a timeout of interval milliseconds.
 
int startTimer (std::chrono::nanoseconds time, Qt::TimerType timerType=Qt::CoarseTimer)
 
void killTimer (int id)
 Kills the timer with timer identifier, id.
 
void killTimer (Qt::TimerId id)
 
template<typename T >
findChild (QAnyStringView aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 Returns the child of this object that can be cast into type T and that is called name, or \nullptr if there is no such object.
 
template<typename T >
QList< T > findChildren (QAnyStringView aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects.
 
template<typename T >
findChild (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
template<typename T >
QList< T > findChildren (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
const QObjectListchildren () const
 Returns a list of child objects.
 
void setParent (QObject *parent)
 Makes the object a child of parent.
 
void installEventFilter (QObject *filterObj)
 Installs an event filter filterObj on this object.
 
void removeEventFilter (QObject *obj)
 Removes an event filter object obj from this object.
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const
 
bool disconnect (const char *signal=nullptr, const QObject *receiver=nullptr, const char *member=nullptr) const
 
bool disconnect (const QObject *receiver, const char *member=nullptr) const
 
void dumpObjectTree () const
 Dumps a tree of children to the debug output.
 
void dumpObjectInfo () const
 Dumps information about signal connections, etc.
 
bool setProperty (const char *name, const QVariant &value)
 Sets the value of the object's name property to value.
 
bool setProperty (const char *name, QVariant &&value)
 
QVariant property (const char *name) const
 Returns the value of the object's name property.
 
QList< QByteArraydynamicPropertyNames () const
 
QBindingStoragebindingStorage ()
 
const QBindingStoragebindingStorage () const
 
QObjectparent () const
 Returns a pointer to the parent object.
 
bool inherits (const char *classname) const
 Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false.
 

Protected Member Functions

virtual void incomingConnection (qintptr handle)
 This virtual function is called by QTcpServer when a new connection is available.
 
void addPendingConnection (QTcpSocket *socket)
 This function is called by QTcpServer::incomingConnection() to add the socket to the list of pending incoming connections.
 
 QTcpServer (QAbstractSocket::SocketType socketType, QTcpServerPrivate &dd, QObject *parent=nullptr)
 
- Protected Member Functions inherited from QObject
QObjectsender () const
 Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns \nullptr.
 
int senderSignalIndex () const
 
int receivers (const char *signal) const
 Returns the number of receivers connected to the signal.
 
bool isSignalConnected (const QMetaMethod &signal) const
 
virtual void timerEvent (QTimerEvent *event)
 This event handler can be reimplemented in a subclass to receive timer events for the object.
 
virtual void childEvent (QChildEvent *event)
 This event handler can be reimplemented in a subclass to receive child events.
 
virtual void customEvent (QEvent *event)
 This event handler can be reimplemented in a subclass to receive custom events.
 
virtual void connectNotify (const QMetaMethod &signal)
 
virtual void disconnectNotify (const QMetaMethod &signal)
 
 QObject (QObjectPrivate &dd, QObject *parent=nullptr)
 

Additional Inherited Members

- Public Slots inherited from QObject
void deleteLater ()
 \threadsafe
 
- Static Public Member Functions inherited from QObject
static QMetaObject::Connection connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
 \threadsafe
 
static QMetaObject::Connection connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection)
 
template<typename Func1 , typename Func2 >
static QMetaObject::Connection connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::ContextTypeForFunctor< Func2 >::ContextType *context, Func2 &&slot, Qt::ConnectionType type=Qt::AutoConnection)
 
template<typename Func1 , typename Func2 >
static QMetaObject::Connection connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, Func2 &&slot)
 
static bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member)
 \threadsafe
 
static bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member)
 
static bool disconnect (const QMetaObject::Connection &)
 Disconnect a connection.
 
template<typename Func1 , typename Func2 >
static bool disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer< Func2 >::Object *receiver, Func2 slot)
 
template<typename Func1 >
static bool disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const QObject *receiver, void **zero)
 
- Protected Attributes inherited from QObject
QScopedPointer< QObjectDatad_ptr
 
- Properties inherited from QObject
QString objectName
 the name of this object
 

Detailed Description

The QTcpServer class provides a TCP-based server.

\reentrant

\inmodule QtNetwork

This class makes it possible to accept incoming TCP connections. You can specify the port or have QTcpServer pick one automatically. You can listen on a specific address or on all the machine's addresses.

Call listen() to have the server listen for incoming connections. The newConnection() signal is then emitted each time a client connects to the server. When the client connection has been added to the pending connection queue using the addPendingConnection() function, the pendingConnectionAvailable() signal is emitted.

Call nextPendingConnection() to accept the pending connection as a connected QTcpSocket. The function returns a pointer to a QTcpSocket in QAbstractSocket::ConnectedState that you can use for communicating with the client.

If an error occurs, serverError() returns the type of error, and errorString() can be called to get a human readable description of what happened.

When listening for connections, the address and port on which the server is listening are available as serverAddress() and serverPort().

Calling close() makes QTcpServer stop listening for incoming connections.

Although QTcpServer is mostly designed for use with an event loop, it's possible to use it without one. In that case, you must use waitForNewConnection(), which blocks until either a connection is available or a timeout expires.

See also
QTcpSocket, {Fortune Server}, {Threaded Fortune Server}, {Torrent Example}

Definition at line 21 of file qtcpserver.h.

Constructor & Destructor Documentation

◆ QTcpServer() [1/2]

QTcpServer::QTcpServer ( QObject * parent = nullptr)
explicit

Constructs a QTcpServer object.

parent is passed to the QObject constructor.

See also
listen(), setSocketDescriptor()

Definition at line 229 of file qtcpserver.cpp.

References d, QObject::parent(), qDebug, and QAbstractSocket::TcpSocket.

+ Here is the call graph for this function:

◆ ~QTcpServer()

QTcpServer::~QTcpServer ( )
virtual

Destroys the QTcpServer object.

If the server is listening for connections, the socket is automatically closed.

Any client \l{QTcpSocket}s that are still connected must either disconnect or be reparented before the server is deleted.

See also
close()

Definition at line 248 of file qtcpserver.cpp.

References close(), and qDebug.

+ Here is the call graph for this function:

◆ QTcpServer() [2/2]

QTcpServer::QTcpServer ( QAbstractSocket::SocketType socketType,
QTcpServerPrivate & dd,
QObject * parent = nullptr )
protected

Constructs a new server object with socket of type socketType. The parent argument is passed to QObject's constructor.

Definition at line 261 of file qtcpserver.cpp.

References d, QObject::parent(), qDebug, QAbstractSocket::SctpSocket, socketType(), QAbstractSocket::TcpSocket, and QAbstractSocket::UdpSocket.

+ Here is the call graph for this function:

Member Function Documentation

◆ acceptError

void QTcpServer::acceptError ( QAbstractSocket::SocketError socketError)
signal
Since
5.0

This signal is emitted when accepting a new connection results in an error. The socketError parameter describes the type of error that occurred.

See also
pauseAccepting(), resumeAccepting()

◆ addPendingConnection()

void QTcpServer::addPendingConnection ( QTcpSocket * socket)
protected

This function is called by QTcpServer::incomingConnection() to add the socket to the list of pending incoming connections.

Note
Don't forget to call this member from reimplemented incomingConnection() if you do not want to break the Pending Connections mechanism. This function emits the pendingConnectionAvailable() signal after the socket has been added.
See also
incomingConnection(), pendingConnectionAvailable()
Since
4.7

Definition at line 610 of file qtcpserver.cpp.

References emit, pendingConnectionAvailable(), and socket.

Referenced by incomingConnection(), QSctpServer::incomingConnection(), and QSslServer::incomingConnection().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ close()

void QTcpServer::close ( )

Closes the server.

The server will no longer listen for incoming connections.

See also
listen()

Definition at line 365 of file qtcpserver.cpp.

References d, qDeleteAll(), QT_CATCH, QT_TRY, and QAbstractSocket::UnconnectedState.

Referenced by ~QTcpServer(), and QCtfServer::run().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ errorString()

QString QTcpServer::errorString ( ) const

Returns a human readable description of the last error that occurred.

See also
serverError()

Definition at line 691 of file qtcpserver.cpp.

Referenced by TestHTTPServer::errorString(), and QCtfServer::run().

+ Here is the caller graph for this function:

◆ hasPendingConnections()

bool QTcpServer::hasPendingConnections ( ) const
virtual

Returns true if the server has a pending connection; otherwise returns false.

See also
nextPendingConnection(), setMaxPendingConnections()

Definition at line 521 of file qtcpserver.cpp.

◆ incomingConnection()

void QTcpServer::incomingConnection ( qintptr socketDescriptor)
protectedvirtual

This virtual function is called by QTcpServer when a new connection is available.

The socketDescriptor argument is the native socket descriptor for the accepted connection.

The base implementation creates a QTcpSocket, sets the socket descriptor and then stores the QTcpSocket in an internal list of pending connections. Finally newConnection() is emitted.

Reimplement this function to alter the server's behavior when a connection is available.

If this server is using QNetworkProxy then the socketDescriptor may not be usable with native socket functions, and should only be used with QTcpSocket::setSocketDescriptor().

Note
If another socket is created in the reimplementation of this method, it needs to be added to the Pending Connections mechanism by calling addPendingConnection().
If you want to handle an incoming connection as a new QTcpSocket object in another thread you have to pass the socketDescriptor to the other thread and create the QTcpSocket object there and use its setSocketDescriptor() method.
See also
newConnection(), nextPendingConnection(), addPendingConnection()

Reimplemented in QSctpServer, and QSslServer.

Definition at line 586 of file qtcpserver.cpp.

References addPendingConnection(), qDebug, QAbstractSocket::setSocketDescriptor(), socket, and socketDescriptor().

+ Here is the call graph for this function:

◆ isListening()

bool QTcpServer::isListening ( ) const

Returns true if the server is currently listening for incoming connections; otherwise returns false.

See also
listen()

Definition at line 352 of file qtcpserver.cpp.

References d, QAbstractSocket::ListeningState, and Q_CHECK_SOCKETENGINE.

Referenced by QCtfServer::run(), and setSocketDescriptor().

+ Here is the caller graph for this function:

◆ listen()

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

Tells the server to listen for incoming connections on address address and port port.

If port is 0, a port is chosen automatically. If address is QHostAddress::Any, the server will listen on all network interfaces.

Returns true on success; otherwise returns false.

See also
isListening()

Definition at line 285 of file qtcpserver.cpp.

References QAbstractSocket::AnyIPProtocol, QHostAddress::AnyIPv4, QAbstractSocketEngine::createSocketEngine(), d, QAbstractSocket::IPv4Protocol, QAbstractSocket::ListeningState, proxy(), qDebug, qWarning, tr, and QAbstractSocket::UnsupportedSocketOperationError.

Referenced by TestHTTPServer::listen(), and QCtfServer::run().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ listenBacklogSize()

int QTcpServer::listenBacklogSize ( ) const

Returns the backlog queue size of to be accepted connections.

Since
6.3
See also
setListenBacklogSize()

Definition at line 670 of file qtcpserver.cpp.

◆ maxPendingConnections()

int QTcpServer::maxPendingConnections ( ) const

Returns the maximum number of pending accepted connections.

The default is 30.

See also
setMaxPendingConnections(), hasPendingConnections()

Definition at line 642 of file qtcpserver.cpp.

◆ newConnection

void QTcpServer::newConnection ( )
signal

This signal is emitted every time a new connection is available, regardless of whether it has been added to the pending connections queue or not.

See also
hasPendingConnections(), nextPendingConnection()

Referenced by TestHTTPServer::TestHTTPServer().

+ Here is the caller graph for this function:

◆ nextPendingConnection()

QTcpSocket * QTcpServer::nextPendingConnection ( )
virtual

Returns the next pending connection as a connected QTcpSocket object.

The socket is created as a child of the server, which means that it is automatically deleted when the QTcpServer object is destroyed. It is still a good idea to delete the object explicitly when you are done with it, to avoid wasting memory.

\nullptr is returned if this function is called when there are no pending connections.

Note
The returned QTcpSocket object cannot be used from another thread. If you want to use an incoming connection from another thread, you need to override incomingConnection().
See also
hasPendingConnections()

Definition at line 544 of file qtcpserver.cpp.

References d, and qWarning.

Referenced by QCtfServer::run().

+ Here is the caller graph for this function:

◆ pauseAccepting()

void QTcpServer::pauseAccepting ( )
Since
5.0

Pauses accepting new connections. Queued connections will remain in queue.

See also
resumeAccepting()

Definition at line 703 of file qtcpserver.cpp.

◆ pendingConnectionAvailable

void QTcpServer::pendingConnectionAvailable ( QPrivateSignal )
signal

This signal is emitted every time a new connection has been added to the pending connections queue.

See also
hasPendingConnections(), nextPendingConnection()
Since
6.4

Referenced by addPendingConnection().

+ Here is the caller graph for this function:

◆ proxy()

QNetworkProxy QTcpServer::proxy ( ) const
Since
4.1

Returns the network proxy for this socket. By default QNetworkProxy::DefaultProxy is used.

See also
setProxy(), QNetworkProxy

Definition at line 747 of file qtcpserver.cpp.

References d.

Referenced by listen().

+ Here is the caller graph for this function:

◆ resumeAccepting()

void QTcpServer::resumeAccepting ( )
Since
5.0

Resumes accepting new connections.

See also
pauseAccepting()

Definition at line 715 of file qtcpserver.cpp.

◆ serverAddress()

QHostAddress QTcpServer::serverAddress ( ) const

Returns the server's address if the server is listening for connections; otherwise returns QHostAddress::Null.

See also
serverPort(), listen()

Definition at line 469 of file qtcpserver.cpp.

References d, QHostAddress::Null, and Q_CHECK_SOCKETENGINE.

◆ serverError()

QAbstractSocket::SocketError QTcpServer::serverError ( ) const

Returns an error code for the last error that occurred.

See also
errorString()

Definition at line 680 of file qtcpserver.cpp.

◆ serverPort()

quint16 QTcpServer::serverPort ( ) const

Returns the server's port if the server is listening for connections; otherwise returns 0.

See also
serverAddress(), listen()

Definition at line 456 of file qtcpserver.cpp.

References d, and Q_CHECK_SOCKETENGINE.

Referenced by TestHTTPServer::baseUrl(), TestHTTPServer::port(), and TestHTTPServer::wait().

+ Here is the caller graph for this function:

◆ setListenBacklogSize()

void QTcpServer::setListenBacklogSize ( int size)

Sets the backlog queue size of to be accepted connections to size.

The operating system might reduce or ignore this value. By default, the queue size is 50.

Note
This property must be set prior to calling listen().
Since
6.3
See also
listenBacklogSize()

Definition at line 658 of file qtcpserver.cpp.

◆ setMaxPendingConnections()

void QTcpServer::setMaxPendingConnections ( int numConnections)

Sets the maximum number of pending accepted connections to numConnections.

QTcpServer will accept no more than numConnections incoming connections before nextPendingConnection() is called. By default, the limit is 30 pending connections.

Clients may still able to connect after the server has reached its maximum number of pending connections (i.e., QTcpSocket can still emit the connected() signal). QTcpServer will stop accepting the new connections, but the operating system may still keep them in queue.

See also
maxPendingConnections(), hasPendingConnections()

Definition at line 631 of file qtcpserver.cpp.

◆ setProxy()

void QTcpServer::setProxy ( const QNetworkProxy & networkProxy)
Since
4.1

Sets the explicit network proxy for this socket to networkProxy.

To disable the use of a proxy for this socket, use the QNetworkProxy::NoProxy proxy type:

See also
proxy(), QNetworkProxy

Definition at line 733 of file qtcpserver.cpp.

References d.

◆ setSocketDescriptor()

bool QTcpServer::setSocketDescriptor ( qintptr socketDescriptor)

Sets the socket descriptor this server should use when listening for incoming connections to socketDescriptor.

Returns true if the socket is set successfully; otherwise returns false.

The socket is assumed to be in listening state.

See also
socketDescriptor(), isListening()

Definition at line 411 of file qtcpserver.cpp.

References QAbstractSocketEngine::createSocketEngine(), d, isListening(), QAbstractSocket::ListeningState, qDebug, qWarning, socketDescriptor(), tr, and QAbstractSocket::UnsupportedSocketOperationError.

+ Here is the call graph for this function:

◆ socketDescriptor()

qintptr QTcpServer::socketDescriptor ( ) const

Returns the native socket descriptor the server uses to listen for incoming instructions, or -1 if the server is not listening.

If the server is using QNetworkProxy, the returned descriptor may not be usable with native socket functions.

See also
setSocketDescriptor(), isListening()

Definition at line 395 of file qtcpserver.cpp.

References d, and Q_CHECK_SOCKETENGINE.

Referenced by incomingConnection(), QSctpServer::incomingConnection(), and setSocketDescriptor().

+ Here is the caller graph for this function:

◆ waitForNewConnection()

bool QTcpServer::waitForNewConnection ( int msec = 0,
bool * timedOut = nullptr )

Waits for at most msec milliseconds or until an incoming connection is available.

Returns true if a connection is available; otherwise returns false. If the operation timed out and timedOut is not \nullptr, *timedOut will be set to true.

This is a blocking function call. Its use is disadvised in a single-threaded GUI application, since the whole application will stop responding until the function returns. waitForNewConnection() is mostly useful when there is no event loop available.

The non-blocking alternative is to connect to the newConnection() signal.

If msec is -1, this function will not time out.

See also
hasPendingConnections(), nextPendingConnection()

Definition at line 495 of file qtcpserver.cpp.

References d, and QAbstractSocket::ListeningState.

Referenced by QCtfServer::run(), and QTcpServerConnection::waitForConnection().

+ Here is the caller graph for this function:

The documentation for this class was generated from the following files: