Socket通信发送和解析出现错误
客户端发送关键代码:
struct Protocal_1 protocal_1;
Word type=163;
int send_length=sizeof(type)+4+sizeof(protocal_1);//=4026
char *pcreate=(char *)malloc(send_length);
memset((char *)pcreate,0,send_length);
memcpy((char *)pcreate,(Word *)&type,sizeof(type));//前两个字节放type=163
memcpy((char *)(pcreate+sizeof(type)),(char *)&send_length,sizeof(send_length));//中间四个字节放发送长度4026
memcpy((char *)(pcreate+sizeof(type)+sizeof(send_length)),(char *)&protocal_1);//后面放结构体
Sendbuf(pcreate,4026);//省写,发送
服务端解析: Word type;
int s_length=4026;
char *buff=(char *)malloc(s_length);
memset(buff,0,s_length);
ReceiveBuf(buff,s_length);//接收
memcpy((char *)&type,buff,sizeof(type));
ShowMessage(type);
free(buff);
错误,为什么服务端输出的type值是65072
希望高手能指出错误,并给出不足,立马会结贴,谢谢了!
[解决办法]
我的意思是说,如果网络传输不正常,可能会出现丢包或粘包的现象,这样会扰乱你的通讯包。所以,对于你的这个结构,建议最后再加一个校验和。确保每次接收到的包都是一个合(和谐)法的包