我使用send传送一个结构体typedef struct
{
long id;
char nickname[20];
char sex[10];
int age;
char address[50];
char password[20];
}USER_INF,*LPUSER_INF;前面id,nickname,sex都能正常使用recv接收,但是到 age,就接到0,然后address存放到了第10个字节,password也是存放到了第10个字节,请问是为什么,应该怎么解决,谢谢了!!!!

解决方案 »

  1.   

    字节对齐
    http://www.skinEx.cn
      

  2.   

    其实并不需要字节对齐。在你发送数据的时候不要把结构体直接用(char*)强制转换,
    先定义一个char * pcsend  指针 再用memmove(不要用strcpy) 把 结构体 copy 进去。然后发送这个 pcsend。
      

  3.   

    我以前是这样做的:USER_INF tInfo;
    char acBuf[65535];
    sendto((char*)&tinfo,sizeof(USER_INF),**,*,*);接收到的时候再:recvfrom(acBuf,65535,straddr,nPort);
    然后再(user_INF*)acBuf;是可以的
      

  4.   

    推荐看个帖子,我也是在这个帖子上学习的
    http://morningdiary.blog.163.com/blog/static/130845402201012892812125/http://morningdiary.blog.163.com/blog/static/130845402201012892812125/