Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <QObject>
- #include <QTcpServer>
- #include <QTcpSocket>
- class SomeClass : public QObject {
- Q_OBJECT
- using slotMethod_t = void (SomeClass::*)();
- public:
- explicit SomeClass(QObject* parent = nullptr) : QObject(parent), server(new TcpServer(this)) {
- connect(server, &QTcpServer::newConnection, this, replaceConnection(server, socket, &SomeClass::someSlot));
- }
- public slots:
- void someSlot() {
- // read data from socket.
- }
- std::function<void()> replaceConnection(
- QTcpServer* server_, QTcpSocket* socket_, slotMethod_t slot) {
- if (socket) {
- socket_->close();
- delete socket_;
- }
- return [&] {
- socket_ = server_->nextPendingConnection();
- connect(socket_, &QAbstractSocket::readyRead, this, slot);
- };
- }
- QTcpServer* server;
- QTcpSocket* socket
- };
Advertisement
Add Comment
Please, Sign In to add comment