当前位置: 代码迷 >> J2SE >> java端向c端转发数据 数据类型转换有关问题
  详细解决方案

java端向c端转发数据 数据类型转换有关问题

热度:10090   发布时间:2013-02-25 00:00:00.0
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;}
  相关解决方案