我需要发送的结构体

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. python每日练习--基础题

    """ 1. 现有面包.热狗.番茄酱.芥末酱以及洋葱,数字显 示有多少种订购组合, 其中面包必订,0 不订,1 订,比如 10000,表示只订购面包 "&quo ...

  2. struts2---访问WEB

    一:在Action中,可以通过以下方式访问WEB的HttpSession,HttpServletRequest,HttpServletResponse等资源 与Servlet API解耦的访问方式 通 ...

  3. 简记 jQuery 插件模板

    /** * @lisence jquery plugin demo v1.0.0 * * author: Jeremy Yu * * description: * this is a jquery p ...

  4. (转)Windows下zookeeper安装及配置

    转:https://blog.csdn.net/qq_36332827/article/details/79700239 zookeeper有单机.伪集群.集群三种部署方式,可根据自己对可靠性的需求选 ...

  5. 基础复习之HTML (meta标签、块级元素与行内元素)

    一.meta标签 SEO 如何在不使用JS的情况下刷新页面(http-equiv="refresh" , content="time") 设置页面缓存 移动端设 ...

  6. 距离矢量路由协议——RIP

    距离矢量路由协议RIP: 众所周知,RIP(Routing Information Protocol),即路由信息协议,是一种距离矢量路由协议,它与IGRP,OSPF等一样都是属于IGP(Interi ...

  7. Html5 学习笔记 【PC固定布局】 实战2 导航栏搜索区域

    <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8& ...

  8. struts2之ModelDriven

    在Struts 2中,提供了另外一种直接使用领域对象的方式,就是让action实现com.opensymphony. xwork2.ModelDriven接口.ModelDriven让你可以直接操作应 ...

  9. Python之执行精确的浮点数运算

    有时候:代码上数字计算可能会有如同下面的误差 原因: 这些错误是由底层CPU和IEEE 754标准通过自己的浮点单位去执行算术时的特征. 由于Python的浮点数据类型使用底层表示存储数据,因此你没办 ...

  10. android ListView列表显示数据

    item.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:and ...