Socket通信——C++服务器端和Java客户端

//更新 这件事可以用现有的序列化框架来做 比如 protobuf

一句话来说就是,C++和Java 通过socket进行通信、数据传输,通过发送“字节流”即可。

字节对于C++和java来说是通用的,但是传输的过程有许多问题需要注意,我为了弄清楚这个过程,查了一些资料,做了一些整理。

 不了解C++ socket编程,可以看这篇博客:

Linux 下:socket通信(Linux下,C/C++语言):http://blog.csdn.net/giantpoplar/article/details/47657303

Windows下:winsock:http://blog.csdn.net/giantpoplar/article/details/47657317

不了解Java socket编程,可以看这篇博客:

Java socket通信:http://blog.csdn.net/giantpoplar/article/details/47657325

不了解字节数组和基本数据类型的转换,可以看这篇博客

byte[]和 整形、浮点型数据的转换-java代码:http://blog.csdn.net/giantpoplar/article/details/47657333

 

在服务器向客户端发数据的时候,可能采取以下两种方式

服务器端直接发送struct

如果在编程时在C++端直接发送一个结构体,需要把这个结构体的指针强制转换为char*,通过一个个的字节传输

Msg message;
retVal = send(Client, (char*)&message,sizeof(Msg), 0);

如果采用这种方式,在客户端收到数据后进行解释,需要对 C++对象的内存布局有一个简单的了解,同样,如果你不了解,可以看这篇: 简单C++对象的内存布局
  • 9
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值