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