#ifndef TCPSERVER_H #define TCPSERVER_H #include #include #include class TCPServer : public QObject { Q_OBJECT public: static TCPServer* getInstance(); void configAndrun(); void setServer(QString IP, quint16 port); void setCallBack(void (*callback)(QString &ip, quint16 port, QByteArray &data));//Qt的信号-槽机制实际就是回调函数, void setCallBack(void (*callback)(QString &ip, quint16 port)); //此处为练手,不使用该机制 void sendToclient(QString ip, quint16 port, QByteArray data); void setTimeOut(int timeout); void stopRun(); private: explicit TCPServer(QObject *parent = nullptr); ~TCPServer(); QString listen_addr = "0.0.0.0"; quint16 listen_port = 7890; int _timeout = 20; QTcpServer tcp_server; QList tcp_socket_list; void (*recvcallback) (QString &ip, quint16 port, QByteArray &data)=nullptr; void (*disccallback) (QString &ip, quint16 port)=nullptr; static TCPServer tcpserver_instance; private slots: void acceptTCPConnection(); void TCPReadPeer(); void discTCPConnection(); signals: }; #endif // TCPSERVER_H