我需要发送的结构体

struct NetDataHeader_t {
int nDataType;
int nDataSize;
}; struct NetDataBase_t {
NetDataHeader_t dataHeader;
double hValue;
double lValue;
double temperature;
};

我的运行函数

 #include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include "sensordata.h"
#include <cstring> MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this); mySocket = new QTcpSocket();
QObject::connect(mySocket, &QTcpSocket::readyRead, this, &MainWindow::MySocketReadData);
QObject::connect(mySocket, &QTcpSocket::disconnected, this, &MainWindow::MySocketDisconnected); ui->btnSend->setEnabled(false);
ui->lineEdit_IP->setText("127.0.0.1");
ui->lineEdit_Port->setText("");
} MainWindow::~MainWindow()
{
delete mySocket;
delete ui;
} void MainWindow::MySocketReadData()
{
QByteArray buffer; buffer = mySocket->readAll();
struct NetDataBase_t myData;
if(!buffer.isEmpty()) {
char *src = buffer.data();
memcpy(&myData, src, sizeof(struct NetDataBase_t));
ui->textEdit_Recv->setText(QString("hValue:%1,lValue%2,temp:%3")
.arg(QString::number(myData.hValue, 'g', ))
.arg(QString::number(myData.lValue, 'g', )).arg(myData.temperature));
}
} void MainWindow::MySocketDisconnected()
{
ui->btnSend->setEnabled(false); ui->btnConnect->setText("连接");
qDebug()<<"Disconnected!";
} void MainWindow::on_btnSend_clicked()
{
struct NetDataBase_t myData;
myData.dataHeader.nDataSize = ;
myData.dataHeader.nDataSize = sizeof(struct NetDataBase_t) - sizeof(struct NetDataHeader_t);
myData.hValue = -1.234567890;
myData.lValue = 0.123456789;
myData.temperature = 23.1; QByteArray data;
data.resize(sizeof(struct NetDataBase_t));
memcpy(data.data(), &myData, sizeof(struct NetDataBase_t)); mySocket->write(data);
mySocket->flush();
} void MainWindow::on_btnConnect_clicked()
{
if(ui->btnConnect->text() == tr("连接")) {
QString ip;
int port;
ip = ui->lineEdit_IP->text();
port = ui->lineEdit_Port->text().toInt(); mySocket->abort();
mySocket->connectToHost(ip, port);
if(!mySocket->waitForConnected()) {
qDebug()<<"Connection failed!";
return;
}
qDebug()<<"Connect successfully!"; ui->btnSend->setEnabled(true);
ui->btnConnect->setText("断开连接");
} else {
mySocket->disconnectFromHost();
ui->btnConnect->setText("连接");
ui->btnSend->setEnabled(false);
}
}

同时使用QBytearray的data函数转换成字符串形式。

然后用memcpy进行复制和转换。

--------------------------------

或许还可以这样,没试过:把结构体转换成一个QString型的就可以write了,然后就可以了。
用QString::fromascii()去转换吧,或者是QString::fromlocal8bit()去转换

QTcpSocket发送结构体的更多相关文章

  1. C# Socket 入门4 UPD 发送结构体(转)

    今天我们来学 socket  发送结构体 1. 先看要发送的结构体 using System; using System.Collections.Generic; using System.Text; ...

  2. Linux C Socket编程发送结构体、文件详解及实例

    利用Socket发送文件.结构体.数字等,是在Socket编程中经常需要用到的.由于Socket只能发送字符串,所以可以使用发送字符串的方式发送文件.结构体.数字等等. 本文:http://www.c ...

  3. socket发送结构体

    struct send_info {char info_from[20]; //发送者IDchar info_to[20]; //接收者IDint info_length; //发送的消息主体的长度c ...

  4. pythonUDP发送结构体,对齐到C++结构体

    给出程序先: import random import socket import struct import threading import pickle import json from str ...

  5. java socket传送一个结构体给用C++编写的服务器解析的问题

    另一端是Java写客户端程序,两者之间需要通信.c++/c接收和发送的都是结构体,而Java是直接发送的字节流或者byte 数组.解决方法:c++/c socket 在发送结构体的时候其实发送的也是字 ...

  6. enginefuncs_t 结构体中的函数

    就是常见的 g_engfuncs 中的函数.AMXX 里就是 fakemeta 的 EngFunc_** // 这些函数由引擎提供给EXTDLL使用.mp.dll hl.dll ... typedef ...

  7. C#结构体数组间的转化

    转自:http://developer.51cto.com/art/200908/143779.htm 解决C#结构体数组间的转化问题的由来:在写C#TCP通信程序时,发送数据时,如果是和VC6.0等 ...

  8. WPF向系统发送消息 并传递结构体

    场景 :需要开发一个通讯组件 流程为:界面-开启接收服务-通过发送组件发送信息到 其他客户端和服务端 接受服务接收其他客户端发送的消息 需要传递给对应组件或者界面 因此会出现类库重复引用问题.因为采用 ...

  9. C#引用c++DLL结构体数组注意事项(数据发送与接收时)

    本文转载自:http://blog.csdn.net/lhs198541/article/details/7593045 最近做的项目,需要在C# 中调用C++ 写的DLL,因为C# 默认的编码方式是 ...

随机推荐

  1. spring-boot整合shiro实现权限管理

    1.运行环境 开发工具:intellij idea JDK版本:1.8 项目管理工具:Maven 4.0.0 2.GITHUB地址 https://github.com/nbfujx/springBo ...

  2. S1 Python 基础

    定义规范 声明变量 name = "Alex Li" 变量定义规则 变量名只能是 字母.数字或下划线的任意组合 变量名的第一个字符不能是数字 以下关键字不能声明为变量名['and' ...

  3. AcWing 257. 关押罪犯 (并查集)打卡

    题目:https://www.acwing.com/problem/content/description/259/ 题意:有两个监狱,监狱里面有很多犯人,现在有很多对冲突,还有个冲突值,现在问我们怎 ...

  4. Oil Deposits( hdu1241

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82828#problem/L Oil Deposits Time Limit:1000MS ...

  5. flex布局滚动问题,子元素无法全部显示的解决办法

    flex布局使用起来非常方便,对于水平垂直居中的需求,很容易就能实现.但是前不久,在做全屏弹窗遮罩登录的时候,遇到了flex布局滚动的一个问题,在此记录一下. 问题重现 理想情况下,当然是下面的状态, ...

  6. AsyncTask2

    参考: AsyncTask - 简书http://www.jianshu.com/p/3b839d7a3fcf 前言 在android应用开发过程中,我们需要是时刻注意保证应用程序的稳定和UI操作响应 ...

  7. 哪位有方法把 dd/mm/yyyy的字符串 格式化成yyyy-mm-dd

     哪位有方法把  dd/mm/yyyy的字符串 格式化成yyyy-mm-dd[总监]Dawood(656317124)  10:00:42啊,找到方法了.procedure TForm1.Button ...

  8. 《单词的减法》state1~state17(第三遍学习记录)

    2016.05.24 state 8 curse/curve dedication 多用于奉献和献身 disastrous disruptive distract state 9 domestic/d ...

  9. taintCheck的实现

    参考:http://bitblaze.cs.berkeley.edu/papers/taintcheck-full.pdf 1. 应用taint analysis需要解决三个问题 a. 哪些input ...

  10. luoguP1514 引水入城 题解(NOIP2010)(Bfs+贪心)

    P1514 引水入城  题目 #include<iostream> #include<cstdlib> #include<cstdio> #include<c ...