struct test{
       int x;
       char y;
};struct test t;
t.x = 44;
t.y = 'a';
int sl =send(client,(const char *)&t,sizeof(t),0); socket 发送 后 在SERVER 端 接收到"  ,a"  这样的数据  像这种里面有不同类型数据的结构体做SOCKET 数据源 如何才能让它在服务器端也能正确显示啊?我要是转换成 字符型的就会"   ,a"要转换成整型的就是 4497 这样很郁闷呐

解决方案 »

  1.   

    既然是用结构体写入,当然读取的时候也是使用结构体读取出来.就好比你写入文件,写的只是一个'ABCD'(Ascii:65,66,67,68),而你读取的时候按整型(4字节)读取,那么就变成了1145258561(即(68<<24)+(67<<16)+(66<<8)+65).另外对于使用于传输当中的结构体请注意字节对齐,或者考虑使用pack(1)强制以字节对齐.
      

  2.   

    先把int转成char*,用四个char字节存起来;然后再紧接着用一个char字节存y,得到一个大小为5的char数组;最后send过去;
    接收到数据后,按刚才相反的顺序解就行了
      

  3.   

    先把int转成char*,用四个char字节存起来;然后再紧接着用一个char字节存y,得到一个大小为5的char数组;最后send过去;
    接收到数据后,按刚才相反的顺序解就行了