日期:2014-05-20  浏览次数:20654 次

java 如何向C++服务发送struct结构???????
C++那边的结构
#define   EREAD_GET_USER_URL  
struct   s_EREAD_GET_USER_URL  
{
int   cmd;
char   userid[32];
int   number;
};
现在java要向那边发送这样的数据信息,如何处理

他返回的也是这种结构类型,java中如何搞定喃??

------解决方案--------------------
CORBA编程去看看吧,嘿嘿
------解决方案--------------------
结构其实你直接无视就好了
int cmd;
char userid[32];
int number;

你JAVA读的时候一共读34位
byte[34] buf = in.read();

buf[0] 第一位 -> cmd
buf[1]~buf[32]第2~33位 -> userid
buf[33] 第34位 -> number
------解决方案--------------------
JAVA与C通信,你现确定协议吧,如果是网络通信我还是比较喜欢webservice

当然私有协议上的socket通信也是可以的拉
------解决方案--------------------
这是协议的问题吧。跟程序无关吧?
------解决方案--------------------
我这里有一种方案,java 使用 socket(TCP/IP) 实现字节流的一个发送,
然后按照楼上 beiouwolf 的方法,因为结构体其实就是一个存储块,了解 C++ int 所占字节就可以
然后把你的数据按字节发送过去,接收方式其实就是读取字节
------解决方案--------------------

用xml格式定义结构体,用socket通信。
------解决方案--------------------
探讨
结构其实你直接无视就好了
int cmd;
char userid[32];
int number;

你JAVA读的时候一共读34位
byte[34] buf = in.read();

buf[0] 第一位 -> cmd
buf[1]~buf[32]第2~33位 -> userid
buf[33] 第34位 -> number

------解决方案--------------------
用xml来处理
------解决方案--------------------
在C++端通过JNI进行类型转换。