编译器-zeromq socket网络传递结构体

问题描述

zeromq socket网络传递结构体

我在服务器端发了一个结构体,在client端接收,发送应该是正常的,客户端也接到了这个数据但是一访问成员变量就segment fault,zeromq 接收到在zmq::msg_t中有个size()函数返回接收到数据的size 我比对了一下是对的上的 但是一访问成员变量就出错,觉得很奇怪,应该是会编译器以及结构体的存储有关,本人新手,求各位大神指点一二 有分

解决方案

另外 我两端的操作系统以及编译器版本都一样 应该不存在大小端的问题

解决方案二:

另外 我两端的操作系统以及编译器版本都一样 应该不存在大小端的问题

解决方案三:

附上代码 client:
#include
#include
#include
#include "../Desktop/market_handlers/src/common/zhelpers.hpp"
using namespace std;

struct shared {
string a;
string b;
string c;
};

struct shared sh;

int main ()
{
//Prepare our context and socket
zmq::context_t context (1);
zmq::socket_t socket(context, ZMQ_SUB);
socket.setsockopt(ZMQ_SUBSCRIBE, "", 0);
socket.connect("tcp://52.69.36.106:10014");
while (true) {
/*
std::string str = s_recv(socket);
cout << str;
*/
string h;
// zmq::message_t msg;
zmq_msg_t msg;
// socket.recv(&msg);
while(true) {
zmq_recv(socket, &msg, 1);

// cout << msg.size() << "n";
struct shared* sha = reinterpret_cast(&msg);
// cout << static_cast(msg.data())->a << "n";
cout << sha->a;
}
}
return 0;
}

解决方案四:

server:
#include
#include

#include "market_handlers/src/common/zhelpers.hpp"
using namespace std;

struct shared {
string a;
string b;
string c;
};

struct shared sh;
struct shared sh1;

int main() {
zmq::context_t context(1);
zmq::socket_t socket(context, ZMQ_PUB);
zmq_bind(socket, "tcp://*:10014");
while (true) {
string str;
cin >> str;
sh.a = str;
cout << sh.a << "n";
// zmq::message_t msg(sh, sizeof(sh), NULL);
// cout << static_cast(msg.data())->a << "n";
zmq_msg_t msg;
// cout << "send? " << s_send(socket, str) << "n";
cout << "data ready? " << zmq_msg_init_data(&msg, &sh, sizeof(sh), NULL, NULL) << "n";
// cout << "data is " << static_cast(zmq_msg_data(&msg))->a << "n";
cout << zmq_send(socket, &msg, 1) << "n";
// cout << socket.send(msg, 1) << "n";
// cout << socket.send(msg , ZMQ_SNDMORE) << "n";
}
return 0;
}

时间: 2024-08-21 10:35:01

编译器-zeromq socket网络传递结构体的相关文章

套接字 网络 zeromq-套接字编程网络传递结构体遇到问题

问题描述 套接字编程网络传递结构体遇到问题 http://ask.csdn.net/questions/239844 传送门 上次给分太少 没有人回答 这次给多一点 希望大家帮忙啊! 解决方案 先看结构体的数据类型是否有指针等,其次就是你进行memcpy复制数据的时候,可以看看内存中的数据是否都正确了

android jni传递结构体类型给c函数,返回结构体,怎么写啊

问题描述 android jni传递结构体类型给c函数,返回结构体,怎么写啊 android jni传递结构体类型给c函数,返回结构体,怎么写啊 c方法:OutAnalyseResultPacket* EcgMainPro(InEcgPacket* pPacKet) 参数和返回值都是结构体类型 解决方案 参考:http://blog.sina.com.cn/s/blog_414e587f0101411f.html 另外,C那里返回结构体指针不太好,因为你没有机制去释放这些内存.容易内存泄漏.除非

socket c c++ 结构体-socket发送结构体问题,无法在服务器端显示完整的结构体

问题描述 socket发送结构体问题,无法在服务器端显示完整的结构体 定义了如下结构体 在发送结构体的时候转换成char *类型 输入了如下学生数据__ 在接收端也进行了数据类型转换,如下 为什么最后的年龄输不出来,而是一串数字,怎么解决? 解决方案 你发送的send是直接发送的student的指针,你需要把整个student的内容存到char数组,然后发送char数组,接收后,也要把char数组memcpy等复制回来 解决方案二: sscanf处有&还能收到数据吗? 解决方案三: 1.你在客户

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

利用Socket发送文件.结构体.数字等,是在Socket编程中经常需要用到的.由于Socket只能发送字符串,所以可以使用发送字符串的方式发送文件.结构体.数字等等. 本文:http://www.cnblogs.com/xudong-bupt/p/3496741.html 1.memcpy Copy block of memory.内存块拷贝函数,该函数是标准库函数,可以进行二进制拷贝数据. 函数原型: void * memcpy ( void * destination, const voi

OCX通过IDispatch传递结构体的4种方法

1)Pass each structure member as an individual method parameter. 2)Serialize the structure to an opaque array of bytes. 3)Serialize the structure to an array of VARIANTs, one array element per structure member.4)Implement a dispatch/dual wrapper objec

关于返回结构体的函数

[前言]写作本文,源于最近回复的 <汇编中函数返回结构体的方法> 一文.在网络上也已经有一些相关文章和相关问题,有的文章已经给出了一部分结果,但总体而言还缺少比较重要的结论.本文以分析 VC6 编译器,32 位架构为主来重复性分析这个话题.   (一)不超过 8 bytes 的小结构体可以通过 EDX:EAX 返回. 本文的范例代码取材于 <汇编中函数返回结构体的方法>一文,并在此基础上进行修改和试验.要研究的第一份代码如下,定义一个不超过 8 bytes 的小结构体,不超过 8

如何在传输结构体数据的同时,完成结构体中变量数据的采集?

问题描述 最近在做一个项目,自己负责的主要工作是将定义好的结构体中的变量的数据传出来,以及matlab计算后传回来的数据进行解算并显示结构体1:传递初始化数据-没有问题结构体2:实时传递摇杆采集的数据-有问题结构体3:传递自动飞行数据-没有问题结构体4:接受matlab结算的数据,并进行显示(暂时还没有测试)现在遇到的问题,主要是:我需要实时传递摇杆采集的数据并传递出去这是按钮事件,当点击按钮之后开始传递结构体的数据SendUAV_ManualPilotpSendUAV_ManualPilot;

(C语言完结)结构体在汇编中的表现形式

一丶了解什么是结构体,以及计算结构体成员的对其值以及总大小(类也是这样算) 结构体的特性 1.结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合 2.在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类. 结构体可以被声明为变量.指针或数组等,用以实现较复杂的数据结构.结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问.[1] 高级代

结构体struct、枚举enum、联合体union、位字段、自定义类型typedef、字节对齐

结构体struct 1 结构体的基本知识 2 结构体与函数 3 结构体数组 4 自引用结构体 枚举变量enum 联合体union 位字段 1 一般的方法定义屏蔽吗 2 用位字段来定义屏蔽吗 自定义类型typedef 字节对齐 pragma pachx 按x个字节对齐 1.结构体struct 1.1 结构体的基本知识 #include <stdio.h> struct point{ int x; int y; }p1, p2, p3; struct point pt; struct point