#include "client.h"
#include "ui_client.h"
#include <QtNetwork>
Client::Client(QWidget *parent) :
QDialog(parent),
ui(new Ui::Client)
{
ui->setupUi(this);
tcpSocket = new QTcpSocket(this);
connect(tcpSocket, SIGNAL(readyRead()), this, SLOT(readMessage()));//PC端在得到readyRead信号之后进行读取操作
connect(tcpSocket, SIGNAL(error(QAbstractSocket::SocketError)),
this, SLOT(displayError(QAbstractSocket::SocketError)));
}
Client::~Client()
{
delete ui;
}
void Client::newConnect()
{
// 初始化数据大小信息为0
nextBlockSize = 0;
// 取消已有的连接
tcpSocket->abort();
ui->hostLineEdit->setText("127.0.0.1");
ui->portLineEdit->setText("8888");
tcpSocket->connectToHost(ui->hostLineEdit->text(),ui->portLineEdit->text().toInt());
}
void Client::readMessage()
{
QDataStream in(tcpSocket);
in.setVersion(QDataStream::Qt_4_3);
forever{
if(nextBlockSize == 0){
if(tcpSocket->bytesAvailable()<sizeof(quint16))
break;
in>>nextBlockSize;
}
if(nextBlockSize==0xFFFF){
break;
}
if(tcpSocket->bytesAvailable()<nextBlockSize)
break;
quint8 requestType;
in>>requestType;
if(requestType=='C')
in>>message_rev.SN>>message_rev.IP>>message_rev.Condition;
}
qDebug()<<message_rev.SN<<message_rev.IP<<message_rev.Condition;
ui->SN_lineEdit_2->setText(QString("%1").arg(message_rev.SN));
ui->IP_lineEdit->setText(message_rev.IP);
ui->STATE_lineEdit_3->setText(message_rev.Condition);
}
void Client::displayError(QAbstractSocket::SocketError)
{
qDebug() << tcpSocket->errorString();
}
// 连接按钮
void Client::on_connectButton_clicked()
{
newConnect();
}