java端向c端转发数据 数据类型转换问题
小弟用java客户端向c服务器转发数据 有的数据类型不会转 Octet String(定长字符串),Unit16_t(16 位无符号整型),Unit32_t(32 位无符号整型) 这些怎么对应java里的数据类型 ,该怎么转 ,求帮助 ,最好有例子 ,谢谢
------解决方案--------------------
上面写得有些问题,改一下
String str="hkkpssy";
int x=0x10080001;
byte bt[]=new byte[8];
Arrays.fill(bt, (byte)0);
byte s[]=str.getBytes();
System.arraycopy(bt,0,s,0,s.length);
BufferedOutputStream out=new BufferedOutputStream(socket.getOutputStream());
out.write(bt,0,bt.length);
out.write(x);
out.flush();
------解决方案--------------------
C语言服务端接收数据并打印,考虑到C语言struct对齐问题,数据顺序是string, u_int32_t, u_int16_t,部分代码如下:
C/C++ code
void handle_req(int fd) {
struct {
char data_str[8];
u_int32_t data_int32;
u_int16_t data_int16;
} data;
if(readn_timeout(fd, (void *)&(data), sizeof(data), 30) < 0) {
printf("readn_timeout() failed");
return;
}
printf("Data_1:[%s], Data_2:[%d], Data_3:[%d]\n",
data.data_str, data.data_int32, data.data_int16);
return;
}