16,212
社区成员
发帖
与我相关
我的任务
分享
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QTcpSocket>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
QTcpSocket *m_pSocket,*m_tcpsocket;
private slots:
void on_btnSend_clicked();
void test();
void on_pushButton_clicked();
void readMessage();
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>
#include <QByteArray>
#include <QHostAddress>
#include "QDebug"
#include "QTimer"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
m_pSocket->disconnectFromHost();
m_pSocket->deleteLater();
delete ui;
}
void MainWindow::on_btnSend_clicked()
{
m_pSocket = new QTcpSocket(this);
QHostAddress addr;
addr.setAddress(QObject::tr("192.168.13.200"));
m_pSocket->connectToHost(addr, 6000);
m_pSocket->waitForConnected();
int i = 0;
QMessageBox::information(this, "提示", "ready to send!");
int iSize = 0;
int iBufLen = 0;
QByteArray arrBuf;
arrBuf.resize(512);
arrBuf[i++] = 0xFA;
arrBuf[i++] = 0xCE;
arrBuf[i++] = 0x00;
arrBuf[i++] = 0x01;
arrBuf[i++] = 0x00;
arrBuf[i++] = 0x01; // target
iSize = i;
arrBuf[i++] = 0x00;
arrBuf[i++] = 0x1C;
arrBuf[i++] = 0x00;
arrBuf[i++] = 0x12; // sender
arrBuf[i++] = 0x00;
arrBuf[i++] = 0x00;
arrBuf[i++] = 0x00;
arrBuf[i++] = 0x04;
iBufLen = i;
arrBuf[i++] = 0x00;
arrBuf[i++] = 0x04;
sprintf(arrBuf.data()+i, "TXML");
i += 4;
char *theBuf = "<Message namespace=\"ZH-606\" version=\"1.2\" type=\"request\" sequence=\"1\">"
"<Execute command=\"SYS_APPASSOCIATION\" enforce=\"true\"/>"
"</Message>";
quint16 iTmp = strlen(theBuf);
sprintf(arrBuf.data()+i, theBuf);
i += iTmp;
arrBuf[iBufLen] = (quint8)(iTmp>>8);
arrBuf[iBufLen+1] = (quint8)(iTmp);
arrBuf[i++] = 0x00;
arrBuf[i++] = 0x12;//SessionId
arrBuf[i++] = 0x00;
arrBuf[i++] = 0x01;//SliceNum分包计数
arrBuf[iSize] = (quint8)((i-8)>>8);
arrBuf[iSize+1] = (quint8)(i-8);
m_pSocket->write(arrBuf.data(), i);
}
void MainWindow::test()
{
qDebug()<<"test";
}
void MainWindow::on_pushButton_clicked()
{
m_tcpsocket = new QTcpSocket(this);
m_tcpsocket->abort();
QHostAddress addr;
addr.setAddress("192.168.13.200");
m_tcpsocket->connectToHost(addr,6000);
if (m_tcpsocket->waitForConnected())
{
qDebug() << "connected...";
}
else
{
qDebug() << "con error.";
}
connect(m_tcpsocket,SIGNAL(readyRead()),
this,SLOT(readMessage()));
}
void MainWindow::readMessage()
{
qDebug() << "read....";
qDebug()<<QString(m_tcpsocket->readAll().toHex());
while(m_tcpsocket->bytesAvailable()>0)
{
QByteArray datagram;
datagram.resize(m_tcpsocket->bytesAvailable());
m_tcpsocket->read(datagram.data(),datagram.size());
QString msg=datagram.data();
qDebug()<<msg;
}
}
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}