#ifndef TCPEQUIPMENT_H
#define TCPEQUIPMENT_H

#define TCP_SERVER_PORT 23333

#include <QTcpServer>
#include <QTcpSocket>
#include <QObject>
#include <QMap>
#include <QHostAddress>
#include <QDebug>
#include <CommomFunc/tool.h>
#include <QByteArray>
#include "XYComFunc_global.h"

class XYCOMFUNC_EXPORT TcpEquipment:public QObject
{
    Q_OBJECT
public:
    TcpEquipment();
    TcpEquipment(QString IP);
    Q_INVOKABLE void setIP(QString IP);
    Q_INVOKABLE void startServer();
    Q_INVOKABLE void startServer(QString IP);
    Q_INVOKABLE void stopServer();
    Q_INVOKABLE void send2All(QString strMsg);
    Q_INVOKABLE void send2All(QByteArray buffer);
    Q_INVOKABLE void send2One(QString strMsg,QString ip);
    Q_INVOKABLE void send2One(QByteArray buffer,QString ip);


signals:
    void dateReceived(QString strIP,int iPort,QByteArray buffer);
    void stateChanged(QString strStateInfo);

public slots:
    void onServerAcceptError();
    void onClientConnected();
    void onClientDataReceived();
    void onClinetDisconnected();

protected:
    virtual void dealRev(QString strIP,int iPort,QByteArray buffer);




private:
    QMap<QString,QTcpSocket*> clientList;
    QTcpServer* server;
    QString listenIp;
    bool serverFlag;
};

#endif // TCPEQUIPMENT_H