Qt 4.8
Signals | Public Functions | Protected Functions | List of all members
QTcpServer Class Reference

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

#include <qtcpserver.h>

Inheritance diagram for QTcpServer:
QObject

Signals

void newConnection ()
 This signal is emitted every time a new connection is available. More...
 
- Signals inherited from QObject
void destroyed (QObject *=0)
 This signal is emitted immediately before the object obj is destroyed, and can not be blocked. More...
 

Public Functions

void close ()
 Closes the server. More...
 
QString errorString () const
 Returns a human readable description of the last error that occurred. More...
 
virtual bool hasPendingConnections () const
 Returns true if the server has a pending connection; otherwise returns false. More...
 
bool isListening () const
 Returns true if the server is currently listening for incoming connections; otherwise returns false. More...
 
bool listen (const QHostAddress &address=QHostAddress::Any, quint16 port=0)
 Tells the server to listen for incoming connections on address address and port port. More...
 
int maxPendingConnections () const
 Returns the maximum number of pending accepted connections. More...
 
virtual QTcpSocketnextPendingConnection ()
 Returns the next pending connection as a connected QTcpSocket object. More...
 
QNetworkProxy proxy () const
 Returns the network proxy for this socket. More...
 
 QTcpServer (QObject *parent=0)
 Constructs a QTcpServer object. More...
 
QHostAddress serverAddress () const
 Returns the server's address if the server is listening for connections; otherwise returns QHostAddress::Null. More...
 
QAbstractSocket::SocketError serverError () const
 Returns an error code for the last error that occurred. More...
 
quint16 serverPort () const
 Returns the server's port if the server is listening for connections; otherwise returns 0. More...
 
void setMaxPendingConnections (int numConnections)
 Sets the maximum number of pending accepted connections to numConnections. More...
 
void setProxy (const QNetworkProxy &networkProxy)
 Sets the explicit network proxy for this socket to networkProxy. More...
 
bool setSocketDescriptor (int socketDescriptor)
 Sets the socket descriptor this server should use when listening for incoming connections to socketDescriptor. More...
 
int socketDescriptor () const
 Returns the native socket descriptor the server uses to listen for incoming instructions, or -1 if the server is not listening. More...
 
bool waitForNewConnection (int msec=0, bool *timedOut=0)
 Waits for at most msec milliseconds or until an incoming connection is available. More...
 
virtual ~QTcpServer ()
 Destroys the QTcpServer object. More...
 
- Public Functions inherited from QObject
bool blockSignals (bool b)
 If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it). More...
 
const QObjectListchildren () const
 Returns a list of child objects. More...
 
bool connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const
 
bool disconnect (const char *signal=0, const QObject *receiver=0, const char *member=0)
 
bool disconnect (const QObject *receiver, const char *member=0)
 
void dumpObjectInfo ()
 Dumps information about signal connections, etc. More...
 
void dumpObjectTree ()
 Dumps a tree of children to the debug output. More...
 
QList< QByteArraydynamicPropertyNames () const
 Returns the names of all properties that were dynamically added to the object using setProperty(). More...
 
virtual bool event (QEvent *)
 This virtual function receives events to an object and should return true if the event e was recognized and processed. More...
 
virtual bool eventFilter (QObject *, QEvent *)
 Filters events if this object has been installed as an event filter for the watched object. More...
 
template<typename T >
findChild (const QString &aName=QString()) const
 Returns the child of this object that can be cast into type T and that is called name, or 0 if there is no such object. More...
 
template<typename T >
QList< T > findChildren (const QString &aName=QString()) 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. More...
 
template<typename T >
QList< T > findChildren (const QRegExp &re) const
 
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. More...
 
void installEventFilter (QObject *)
 Installs an event filter filterObj on this object. More...
 
bool isWidgetType () const
 Returns true if the object is a widget; otherwise returns false. More...
 
void killTimer (int id)
 Kills the timer with timer identifier, id. More...
 
virtual const QMetaObjectmetaObject () const
 Returns a pointer to the meta-object of this object. More...
 
void moveToThread (QThread *thread)
 Changes the thread affinity for this object and its children. More...
 
QString objectName () const
 
QObjectparent () const
 Returns a pointer to the parent object. More...
 
QVariant property (const char *name) const
 Returns the value of the object's name property. More...
 
Q_INVOKABLE QObject (QObject *parent=0)
 Constructs an object with parent object parent. More...
 
void removeEventFilter (QObject *)
 Removes an event filter object obj from this object. More...
 
void setObjectName (const QString &name)
 
void setParent (QObject *)
 Makes the object a child of parent. More...
 
bool setProperty (const char *name, const QVariant &value)
 Sets the value of the object's name property to value. More...
 
void setUserData (uint id, QObjectUserData *data)
 
bool signalsBlocked () const
 Returns true if signals are blocked; otherwise returns false. More...
 
int startTimer (int interval)
 Starts a timer and returns a timer identifier, or returns zero if it could not start a timer. More...
 
QThreadthread () const
 Returns the thread in which the object lives. More...
 
QObjectUserDatauserData (uint id) const
 
virtual ~QObject ()
 Destroys the object, deleting all its child objects. More...
 

Protected Functions

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

Additional Inherited Members

- Public Slots inherited from QObject
void deleteLater ()
 Schedules this object for deletion. More...
 
- Static Public Functions inherited from QObject
static bool connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
 Creates a connection of the given type from the signal in the sender object to the method in the receiver object. More...
 
static bool connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection)
 
static bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member)
 Disconnects signal in object sender from method in object receiver. More...
 
static bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member)
 
static uint registerUserData ()
 
static QString tr (const char *sourceText, const char *comment=0, int n=-1)
 
static QString trUtf8 (const char *sourceText, const char *comment=0, int n=-1)
 
- Static Public Variables inherited from QObject
static const QMetaObject staticMetaObject
 This variable stores the meta-object for the class. More...
 
- Protected Variables inherited from QObject
QScopedPointer< QObjectDatad_ptr
 
- Static Protected Variables inherited from QObject
static const QMetaObject staticQtMetaObject
 

Detailed Description

The QTcpServer class provides a TCP-based server.

Note
This class or function is reentrant.
Attention
Module: 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.

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.

Symbian Platform Security Requirements

On Symbian, processes which use this class must have the NetworkServices platform security capability. If the client process lacks this capability, it will lead to a panic.

Platform security capabilities are added via the TARGET.CAPABILITY qmake variable.

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

Definition at line 61 of file qtcpserver.h.

Constructors and Destructors

◆ QTcpServer()

QTcpServer::QTcpServer ( QObject parent = 0)
explicit

Constructs a QTcpServer object.

parent is passed to the QObject constructor.

See also
listen(), setSocketDescriptor()

Definition at line 252 of file qtcpserver.cpp.

253  : QObject(*new QTcpServerPrivate, parent)
254 {
255 }
Q_INVOKABLE QObject(QObject *parent=0)
Constructs an object with parent object parent.
Definition: qobject.cpp:753

◆ ~QTcpServer()

QTcpServer::~QTcpServer ( )
virtual

Destroys the QTcpServer object.

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

Any client QTcpSocket that are still connected must either disconnect or be reparented before the server is deleted.

See also
close()

Definition at line 266 of file qtcpserver.cpp.

267 {
268  close();
269 }
void close()
Closes the server.
Definition: qtcpserver.cpp:371

Functions

◆ 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.
See also
incomingConnection()
Since
4.7

Definition at line 611 of file qtcpserver.cpp.

Referenced by incomingConnection().

612 {
613  d_func()->pendingConnections.append(socket);
614 }

◆ close()

void QTcpServer::close ( )

Closes the server.

The server will no longer listen for incoming connections.

See also
listen()

Definition at line 371 of file qtcpserver.cpp.

Referenced by QFtpDTP::setupSocket(), and ~QTcpServer().

372 {
373  Q_D(QTcpServer);
374 
375  qDeleteAll(d->pendingConnections);
376  d->pendingConnections.clear();
377 
378  if (d->socketEngine) {
379  d->socketEngine->close();
380  QT_TRY {
381  d->socketEngine->deleteLater();
382  } QT_CATCH(const std::bad_alloc &) {
383  // in out of memory situations, the socketEngine
384  // will be deleted in ~QTcpServer (it's a child-object of this)
385  }
386  d->socketEngine = 0;
387  }
388 
390 }
double d
Definition: qnumeric_p.h:62
#define Q_D(Class)
Definition: qglobal.h:2482
#define QT_CATCH(A)
Definition: qglobal.h:1537
The QTcpServer class provides a TCP-based server.
Definition: qtcpserver.h:61
Q_OUTOFLINE_TEMPLATE void qDeleteAll(ForwardIterator begin, ForwardIterator end)
Definition: qalgorithms.h:319
#define QT_TRY
Definition: qglobal.h:1536

◆ errorString()

QString QTcpServer::errorString ( ) const

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

See also
serverError()

Definition at line 663 of file qtcpserver.cpp.

Referenced by QVNCServer::init().

664 {
665  return d_func()->serverSocketErrorString;
666 }

◆ 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 531 of file qtcpserver.cpp.

532 {
533  return !d_func()->pendingConnections.isEmpty();
534 }

◆ incomingConnection()

void QTcpServer::incomingConnection ( int  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 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()

Definition at line 589 of file qtcpserver.cpp.

590 {
591 #if defined (QTCPSERVER_DEBUG)
592  qDebug("QTcpServer::incomingConnection(%i)", socketDescriptor);
593 #endif
594 
595  QTcpSocket *socket = new QTcpSocket(this);
597  addPendingConnection(socket);
598 }
Q_CORE_EXPORT void qDebug(const char *,...)
bool setSocketDescriptor(int socketDescriptor, SocketState state=ConnectedState, OpenMode openMode=ReadWrite)
Initializes QAbstractSocket with the native socket descriptor socketDescriptor.
int socketDescriptor() const
Returns the native socket descriptor the server uses to listen for incoming instructions, or -1 if the server is not listening.
Definition: qtcpserver.cpp:401
The QTcpSocket class provides a TCP socket.
Definition: qtcpsocket.h:56
void addPendingConnection(QTcpSocket *socket)
This function is called by QTcpServer::incomingConnection() to add the socket to the list of pending ...
Definition: qtcpserver.cpp:611

◆ 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 358 of file qtcpserver.cpp.

Referenced by QTcpServerPrivate::readNotification(), setSocketDescriptor(), QFtpDTP::setupListener(), and QFtpDTP::waitForConnection().

359 {
360  Q_D(const QTcpServer);
361  Q_CHECK_SOCKETENGINE(false);
362  return d->socketEngine->state() == QAbstractSocket::ListeningState;
363 }
double d
Definition: qnumeric_p.h:62
#define Q_D(Class)
Definition: qglobal.h:2482
#define Q_CHECK_SOCKETENGINE(returnValue)
Definition: qtcpserver.cpp:121
The QTcpServer class provides a TCP-based server.
Definition: qtcpserver.h:61

◆ 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 281 of file qtcpserver.cpp.

Referenced by QVNCServer::init(), and QFtpDTP::setupListener().

282 {
283  Q_D(QTcpServer);
284  if (d->state == QAbstractSocket::ListeningState) {
285  qWarning("QTcpServer::listen() called when already listening");
286  return false;
287  }
288 
290 
291 #ifdef QT_NO_NETWORKPROXY
292  static const QNetworkProxy &proxy = *(QNetworkProxy *)0;
293 #else
294  QNetworkProxy proxy = d->resolveProxy(address, port);
295 #endif
296 
297  delete d->socketEngine;
299  if (!d->socketEngine) {
301  d->serverSocketErrorString = tr("Operation on socket is not supported");
302  return false;
303  }
304 #ifndef QT_NO_BEARERMANAGEMENT
305  //copy network session down to the socket engine (if it has been set)
306  d->socketEngine->setProperty("_q_networksession", property("_q_networksession"));
307 #endif
308  if (!d->socketEngine->initialize(QAbstractSocket::TcpSocket, proto)) {
309  d->serverSocketError = d->socketEngine->error();
310  d->serverSocketErrorString = d->socketEngine->errorString();
311  return false;
312  }
313 
314 #if defined(Q_OS_UNIX)
315  // Under Unix, we want to be able to bind to the port, even if a socket on
316  // the same address-port is in TIME_WAIT. Under Windows this is possible
317  // anyway -- furthermore, the meaning of reusable on Windows is different:
318  // it means that you can use the same address-port for multiple listening
319  // sockets.
320  // Don't abort though if we can't set that option. For example the socks
321  // engine doesn't support that option, but that shouldn't prevent us from
322  // trying to bind/listen.
323  d->socketEngine->setOption(QAbstractSocketEngine::AddressReusable, 1);
324 #endif
325 
326  if (!d->socketEngine->bind(address, port)) {
327  d->serverSocketError = d->socketEngine->error();
328  d->serverSocketErrorString = d->socketEngine->errorString();
329  return false;
330  }
331 
332  if (!d->socketEngine->listen()) {
333  d->serverSocketError = d->socketEngine->error();
334  d->serverSocketErrorString = d->socketEngine->errorString();
335  return false;
336  }
337 
338  d->socketEngine->setReceiver(d);
339  d->socketEngine->setReadNotificationEnabled(true);
340 
342  d->address = d->socketEngine->localAddress();
343  d->port = d->socketEngine->localPort();
344 
345 #if defined (QTCPSERVER_DEBUG)
346  qDebug("QTcpServer::listen(%i, \"%s\") == true (listening on port %i)", port,
347  address.toString().toLatin1().constData(), d->socketEngine->localPort());
348 #endif
349  return true;
350 }
double d
Definition: qnumeric_p.h:62
static QAbstractSocketEngine * createSocketEngine(QAbstractSocket::SocketType socketType, const QNetworkProxy &, QObject *parent)
static QString tr(const char *sourceText, const char *comment=0, int n=-1)
NetworkLayerProtocol
This enum describes the network layer protocol values used in Qt.
#define Q_D(Class)
Definition: qglobal.h:2482
Q_CORE_EXPORT void qDebug(const char *,...)
The QNetworkProxy class provides a network layer proxy.
Q_CORE_EXPORT void qWarning(const char *,...)
QString toString() const
Returns the address as a string.
QByteArray toLatin1() const Q_REQUIRED_RESULT
Returns a Latin-1 representation of the string as a QByteArray.
Definition: qstring.cpp:3993
const char * constData() const
Returns a pointer to the data stored in the byte array.
Definition: qbytearray.h:433
QAbstractSocket::NetworkLayerProtocol protocol() const
Returns the network layer protocol of the host address.
The QTcpServer class provides a TCP-based server.
Definition: qtcpserver.h:61
QNetworkProxy proxy() const
Returns the network proxy for this socket.
Definition: qtcpserver.cpp:701
QVariant property(const char *name) const
Returns the value of the object&#39;s name property.
Definition: qobject.cpp:3807

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

643 {
644  return d_func()->maxConnections;
645 }

◆ newConnection

void QTcpServer::newConnection ( )
signal

This signal is emitted every time a new connection is available.

See also
hasPendingConnections(), nextPendingConnection()

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

0 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 554 of file qtcpserver.cpp.

Referenced by QVNCServer::newConnection(), and QFtpDTP::setupSocket().

555 {
556  Q_D(QTcpServer);
557  if (d->pendingConnections.isEmpty())
558  return 0;
559 
560  if (!d->socketEngine->isReadNotificationEnabled())
561  d->socketEngine->setReadNotificationEnabled(true);
562 
563  return d->pendingConnections.takeFirst();
564 }
double d
Definition: qnumeric_p.h:62
#define Q_D(Class)
Definition: qglobal.h:2482
The QTcpServer class provides a TCP-based server.
Definition: qtcpserver.h:61

◆ proxy()

QNetworkProxy QTcpServer::proxy ( ) const

Returns the network proxy for this socket.

Since
4.1

By default QNetworkProxy::DefaultProxy is used.

See also
setProxy(), QNetworkProxy

Definition at line 701 of file qtcpserver.cpp.

Referenced by listen().

702 {
703  Q_D(const QTcpServer);
704  return d->proxy;
705 }
double d
Definition: qnumeric_p.h:62
#define Q_D(Class)
Definition: qglobal.h:2482
The QTcpServer class provides a TCP-based server.
Definition: qtcpserver.h:61

◆ 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 479 of file qtcpserver.cpp.

480 {
481  Q_D(const QTcpServer);
483  return d->socketEngine->localAddress();
484 }
double d
Definition: qnumeric_p.h:62
#define Q_D(Class)
Definition: qglobal.h:2482
#define Q_CHECK_SOCKETENGINE(returnValue)
Definition: qtcpserver.cpp:121
The QTcpServer class provides a TCP-based server.
Definition: qtcpserver.h:61
The QHostAddress class provides an IP address.
Definition: qhostaddress.h:70

◆ serverError()

QAbstractSocket::SocketError QTcpServer::serverError ( ) const

Returns an error code for the last error that occurred.

See also
errorString()

Definition at line 652 of file qtcpserver.cpp.

653 {
654  return d_func()->serverSocketError;
655 }

◆ 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 466 of file qtcpserver.cpp.

Referenced by QFtpDTP::setupListener().

467 {
468  Q_D(const QTcpServer);
470  return d->socketEngine->localPort();
471 }
double d
Definition: qnumeric_p.h:62
#define Q_D(Class)
Definition: qglobal.h:2482
#define Q_CHECK_SOCKETENGINE(returnValue)
Definition: qtcpserver.cpp:121
The QTcpServer class provides a TCP-based server.
Definition: qtcpserver.h:61

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

632 {
633  d_func()->maxConnections = numConnections;
634 }

◆ setProxy()

void QTcpServer::setProxy ( const QNetworkProxy networkProxy)

Sets the explicit network proxy for this socket to networkProxy.

Since
4.1

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

See also
proxy(), QNetworkProxy

Definition at line 684 of file qtcpserver.cpp.

685 {
686  Q_D(QTcpServer);
687  d->proxy = networkProxy;
688 }
double d
Definition: qnumeric_p.h:62
#define Q_D(Class)
Definition: qglobal.h:2482
The QTcpServer class provides a TCP-based server.
Definition: qtcpserver.h:61

◆ setSocketDescriptor()

bool QTcpServer::setSocketDescriptor ( int  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 417 of file qtcpserver.cpp.

418 {
419  Q_D(QTcpServer);
420  if (isListening()) {
421  qWarning("QTcpServer::setSocketDescriptor() called when already listening");
422  return false;
423  }
424 
425  if (d->socketEngine)
426  delete d->socketEngine;
428  if (!d->socketEngine) {
430  d->serverSocketErrorString = tr("Operation on socket is not supported");
431  return false;
432  }
433 #ifndef QT_NO_BEARERMANAGEMENT
434  //copy network session down to the socket engine (if it has been set)
435  d->socketEngine->setProperty("_q_networksession", property("_q_networksession"));
436 #endif
437  if (!d->socketEngine->initialize(socketDescriptor, QAbstractSocket::ListeningState)) {
438  d->serverSocketError = d->socketEngine->error();
439  d->serverSocketErrorString = d->socketEngine->errorString();
440 #if defined (QTCPSERVER_DEBUG)
441  qDebug("QTcpServer::setSocketDescriptor(%i) failed (%s)", socketDescriptor,
442  d->serverSocketErrorString.toLatin1().constData());
443 #endif
444  return false;
445  }
446 
447  d->socketEngine->setReceiver(d);
448  d->socketEngine->setReadNotificationEnabled(true);
449 
450  d->state = d->socketEngine->state();
451  d->address = d->socketEngine->localAddress();
452  d->port = d->socketEngine->localPort();
453 
454 #if defined (QTCPSERVER_DEBUG)
455  qDebug("QTcpServer::setSocketDescriptor(%i) succeeded.", socketDescriptor);
456 #endif
457  return true;
458 }
double d
Definition: qnumeric_p.h:62
static QAbstractSocketEngine * createSocketEngine(QAbstractSocket::SocketType socketType, const QNetworkProxy &, QObject *parent)
static QString tr(const char *sourceText, const char *comment=0, int n=-1)
#define Q_D(Class)
Definition: qglobal.h:2482
bool isListening() const
Returns true if the server is currently listening for incoming connections; otherwise returns false...
Definition: qtcpserver.cpp:358
Q_CORE_EXPORT void qDebug(const char *,...)
Q_CORE_EXPORT void qWarning(const char *,...)
int socketDescriptor() const
Returns the native socket descriptor the server uses to listen for incoming instructions, or -1 if the server is not listening.
Definition: qtcpserver.cpp:401
The QTcpServer class provides a TCP-based server.
Definition: qtcpserver.h:61
QVariant property(const char *name) const
Returns the value of the object&#39;s name property.
Definition: qobject.cpp:3807

◆ socketDescriptor()

int 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 401 of file qtcpserver.cpp.

402 {
403  Q_D(const QTcpServer);
405  return d->socketEngine->socketDescriptor();
406 }
double d
Definition: qnumeric_p.h:62
#define Q_D(Class)
Definition: qglobal.h:2482
#define Q_CHECK_SOCKETENGINE(returnValue)
Definition: qtcpserver.cpp:121
The QTcpServer class provides a TCP-based server.
Definition: qtcpserver.h:61

◆ waitForNewConnection()

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

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 0, *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 505 of file qtcpserver.cpp.

Referenced by QFtpDTP::waitForConnection().

506 {
507  Q_D(QTcpServer);
508  if (d->state != QAbstractSocket::ListeningState)
509  return false;
510 
511  if (!d->socketEngine->waitForRead(msec, timedOut)) {
512  d->serverSocketError = d->socketEngine->error();
513  d->serverSocketErrorString = d->socketEngine->errorString();
514  return false;
515  }
516 
517  if (timedOut && *timedOut)
518  return false;
519 
520  d->readNotification();
521 
522  return true;
523 }
double d
Definition: qnumeric_p.h:62
#define Q_D(Class)
Definition: qglobal.h:2482
The QTcpServer class provides a TCP-based server.
Definition: qtcpserver.h:61

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