forked from yydcaib/TCPServer
41 lines
1.2 KiB
C++
41 lines
1.2 KiB
C++
#ifndef TCPSERVER_H
|
|
#define TCPSERVER_H
|
|
|
|
#include <QObject>
|
|
#include <QTcpServer>
|
|
#include <QTcpSocket>
|
|
#include <QDebug>
|
|
|
|
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 <QTcpSocket*> 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
|