我想知道c++和java之间通过ActiveMQ消息中间件怎么传输图片数据

FD_2013 2015-02-05 02:34:29
如题:通过ActiveMQ这个中间件,怎么实现在C++和Java之间传输图像数据,或者更进一步,传输一个包含图像数据的结构体

最先想到的方法是通过ActiveMQ本身自带的消息转换函数,但是又有疑问:通过C++转换成的字节流格式,在java接收端那边能不能正确接收到并反序列化成结构体信息。

后来想到的方法是采用一个json格式转换结构体数据,java接收端接收json格式数据并转换成结构体数据,又有一个疑问:这种方式能不能发送图片,如果图像数据太大的话能不能接收的到?

...全文
1458 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
clever101 2017-04-06
  • 打赏
  • 举报
回复
FD_2013 2015-02-15
  • 打赏
  • 举报
回复
引用 12 楼 Sandrer 的回复:
为什么你要把图片看成是图片? 传输只管过程,不管开始和结果 你的程序两端都明白这些数据所代表的意思不就行了
试验了几次,将图片转成Bytes发送就可以了,C++这边是 vector <unsigned char> 然后setBytes 发送,java那边通过Map里的字段名getBytes找对应的字段名,就可以把数据拿到了
FD_2013 2015-02-15
  • 打赏
  • 举报
回复
引用 11 楼 tangtangtangbaoli 的回复:
应该是c++这边的进程 跟java这边的进程 通讯传输图片 通过你这个ActiveMQ相当于封装了通讯的socket 把应用层 的图片二进制字节流传给java服务端 这边收到完整的图片数据包 如果知道图片格式比如jpg ,bmp,gif等等 直接java保存成二进制文件 不就行了吗 不过看你的这个ActiveMQ 中间件功能了 比如比较大的数据包 要通过tcp分段传输 肯定要拼包 才能完整 是不是他都可以实现
嗯,前几天试了下,可以传,用MapMessage可以将结构体里的数据映射进去,然后发送一个Map,java那边可以接收到
Sandrer 2015-02-13
  • 打赏
  • 举报
回复
为什么你要把图片看成是图片? 传输只管过程,不管开始和结果 你的程序两端都明白这些数据所代表的意思不就行了
tangtangtangbaoli 2015-02-13
  • 打赏
  • 举报
回复
应该是c++这边的进程 跟java这边的进程 通讯传输图片 通过你这个ActiveMQ相当于封装了通讯的socket 把应用层 的图片二进制字节流传给java服务端 这边收到完整的图片数据包 如果知道图片格式比如jpg ,bmp,gif等等 直接java保存成二进制文件 不就行了吗 不过看你的这个ActiveMQ 中间件功能了 比如比较大的数据包 要通过tcp分段传输 肯定要拼包 才能完整 是不是他都可以实现
FD_2013 2015-02-12
  • 打赏
  • 举报
回复
引用 8 楼 bluesen 的回复:
传图片应该没问题,问题是图片通常比较大,会超过ActiveMQ消息大小的限制吧
这个说是貌似可以设置最大传输大小
FD_2013 2015-02-09
  • 打赏
  • 举报
回复
引用 7 楼 zapdos 的回复:
ActiveMQ本来就是JMS的实现,怎么可能JAVA会接收不到,只要定义好了消息结构就可以 放心用吧,我们以前在总行里的JAVA应用跟各省分行的前置机通讯都是用MQ,可以带附件
好的,我知道了,谢谢啦
bluesen 2015-02-07
  • 打赏
  • 举报
回复
传图片应该没问题,问题是图片通常比较大,会超过ActiveMQ消息大小的限制吧
zapdos 2015-02-07
  • 打赏
  • 举报
回复
ActiveMQ本来就是JMS的实现,怎么可能JAVA会接收不到,只要定义好了消息结构就可以 放心用吧,我们以前在总行里的JAVA应用跟各省分行的前置机通讯都是用MQ,可以带附件
FD_2013 2015-02-06
  • 打赏
  • 举报
回复
引用 5 楼 brk1985 的回复:
通过C++转换成的字节流格式,在java接收端那边能不能正确接收到并反序列化成结构体信息=============java没有结构体,可以不用结构体,只要能把图片数据发送过去就ok了,只要java接收端能够接收到这些信息,那就可以通过解析获取想要格式的信息。。。
嗯,你说这些我也知道,具体怎么样还得试验下,一直忙的也没顾得上
brk1985 2015-02-06
  • 打赏
  • 举报
回复
通过C++转换成的字节流格式,在java接收端那边能不能正确接收到并反序列化成结构体信息=============java没有结构体,可以不用结构体,只要能把图片数据发送过去就ok了,只要java接收端能够接收到这些信息,那就可以通过解析获取想要格式的信息。。。
brk1985 2015-02-06
  • 打赏
  • 举报
回复
引用 3 楼 zhu339111520 的回复:
引用 1 楼 brk1985 的回复:
为什么不用socket传输图片数据?
已经引入中间件实现通讯了,如果用socket自己实现的话,那不是多次一举了又,还得自己定义传输协议,自己实现。就是想知道我从c++这端发送一个里面包含图片的结构体数据过去,java那边接收到这个数据流,能不能正确的解析出来,还没查到这方面相关资料,没有例子可供参考。现在在尝试一个方法:用一个MapMessage消息映射,分段发送过去,图像数据先转换成字符串数据,然后那边接收看,就只能先这样试一下。也不知道可不可行,存不存在隐患什么的
java貌似没有结构体这个概念,在发送数据包时,先发送文件头,再用二进制流传输过去,理论上只要java端能够接收到二进制流,根据文件头指出的图片长度,读取相应字节大小的二进制数据生成图片文件中就可以了
FD_2013 2015-02-05
  • 打赏
  • 举报
回复
引用 1 楼 brk1985 的回复:
为什么不用socket传输图片数据?
已经引入中间件实现通讯了,如果用socket自己实现的话,那不是多次一举了又,还得自己定义传输协议,自己实现。就是想知道我从c++这端发送一个里面包含图片的结构体数据过去,java那边接收到这个数据流,能不能正确的解析出来,还没查到这方面相关资料,没有例子可供参考。现在在尝试一个方法:用一个MapMessage消息映射,分段发送过去,图像数据先转换成字符串数据,然后那边接收看,就只能先这样试一下。也不知道可不可行,存不存在隐患什么的
FD_2013 2015-02-05
  • 打赏
  • 举报
回复
引用 1 楼 brk1985 的回复:
为什么不用socket传输图片数据?
前人种树我们遮阴
brk1985 2015-02-05
  • 打赏
  • 举报
回复
为什么不用socket传输图片数据?

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧