1 | // Copyright (C) 2016 The Qt Company Ltd. |
2 | // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only |
3 | |
4 | #ifndef QTCPSERVER_H |
5 | #define QTCPSERVER_H |
6 | |
7 | #include <QtNetwork/qtnetworkglobal.h> |
8 | #include <QtCore/qobject.h> |
9 | #include <QtNetwork/qabstractsocket.h> |
10 | #include <QtNetwork/qhostaddress.h> |
11 | |
12 | QT_BEGIN_NAMESPACE |
13 | |
14 | |
15 | class QTcpServerPrivate; |
16 | #ifndef QT_NO_NETWORKPROXY |
17 | class QNetworkProxy; |
18 | #endif |
19 | class QTcpSocket; |
20 | |
21 | class Q_NETWORK_EXPORT QTcpServer : public QObject |
22 | { |
23 | Q_OBJECT |
24 | public: |
25 | explicit QTcpServer(QObject *parent = nullptr); |
26 | virtual ~QTcpServer(); |
27 | |
28 | bool listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0); |
29 | void close(); |
30 | |
31 | bool isListening() const; |
32 | |
33 | void setMaxPendingConnections(int numConnections); |
34 | int maxPendingConnections() const; |
35 | |
36 | void setListenBacklogSize(int size); |
37 | int listenBacklogSize() const; |
38 | |
39 | quint16 serverPort() const; |
40 | QHostAddress serverAddress() const; |
41 | |
42 | qintptr socketDescriptor() const; |
43 | bool setSocketDescriptor(qintptr socketDescriptor); |
44 | |
45 | bool waitForNewConnection(int msec = 0, bool *timedOut = nullptr); |
46 | virtual bool hasPendingConnections() const; |
47 | virtual QTcpSocket *nextPendingConnection(); |
48 | |
49 | QAbstractSocket::SocketError serverError() const; |
50 | QString errorString() const; |
51 | |
52 | void pauseAccepting(); |
53 | void resumeAccepting(); |
54 | |
55 | #ifndef QT_NO_NETWORKPROXY |
56 | void setProxy(const QNetworkProxy &networkProxy); |
57 | QNetworkProxy proxy() const; |
58 | #endif |
59 | |
60 | protected: |
61 | virtual void incomingConnection(qintptr handle); |
62 | void addPendingConnection(QTcpSocket* socket); |
63 | |
64 | QTcpServer(QAbstractSocket::SocketType socketType, QTcpServerPrivate &dd, |
65 | QObject *parent = nullptr); |
66 | |
67 | Q_SIGNALS: |
68 | void newConnection(); |
69 | void pendingConnectionAvailable(QPrivateSignal); |
70 | void acceptError(QAbstractSocket::SocketError socketError); |
71 | |
72 | private: |
73 | Q_DISABLE_COPY(QTcpServer) |
74 | Q_DECLARE_PRIVATE(QTcpServer) |
75 | }; |
76 | |
77 | QT_END_NAMESPACE |
78 | |
79 | #endif // QTCPSERVER_H |
80 | |