#ifndef TCPMODULE_H
#define TCPMODULE_H
#include <QTcpServer>
#include <QTcpSocket>
class TcpModule :QObject
{
Q_OBJECT
public:
TcpModule(QObject *parent = nullptr);
~TcpModule();
void sendOrder(QString order);
void setIpPort(QString ip,int port);
public slots:
void connected();
void disconnected();
void onError(QAbstractSocket::SocketError);
void readMessage();
private:
QTcpServer *mServer;
QTcpSocket *m_TcpSocket;
QList<QTcpSocket *>clients;
QString m_strIP ;
int m_iPort ;
bool flag;
int recvSize;
};
#endif // TCPMODULE_H
#include "tcpmodule.h"
TcpModule::TcpModule(QObject *parent) :
QObject(parent),
m_TcpSocket(NULL)
{
m_TcpSocket = new QTcpSocket(this);
connect(m_TcpSocket,SIGNAL(readyRead()),this,SLOT(readMessage()));
connect(m_TcpSocket,SIGNAL(connected()),this,SLOT(connected()));
connect(m_TcpSocket,SIGNAL(disconnected()),this,SLOT(disconnected()));
connect(m_TcpSocket,SIGNAL(error(QAbstractSocket::SocketError)),this,SLOT(onError(QAbstractSocket::SocketError)));
}
TcpModule::~TcpModule()
{
}
void TcpModule::connected()
{
flag = true;
}
void TcpModule::disconnected()
{
flag = false;
}
void TcpModule::onError(QAbstractSocket::SocketError)
{
}
void TcpModule::sendOrder(QString order)
{
if(m_TcpSocket != NULL){
quint64 len = m_TcpSocket->write(order.toLocal8Bit());
}
}
void TcpModule::setIpPort(QString ip, int port)
{
QString m_strIP = ip;
int m_iPort = port;
m_TcpSocket->disconnectFromHost();
m_TcpSocket->connectToHost(m_strIP,m_iPort);
}
//接收数据
void TcpModule::readMessage()
{
QTcpSocket *obj = (QTcpSocket*)sender();
//获取发送数据端的IP
QString ip = obj->peerAddress().toString();
ip.remove("::ffff:");
QString msg = obj->readAll();
recvSize += msg.size();//统计接收到的数据的字节数
}