当前位置: 技术问答>linux和unix
客户端与服务端通信问题
来源: 互联网 发布时间:2016-11-12
本文导语: struct MsgPackage{ //通信协议结构体 char cmd; //操作命令 int ack; //标志位 char userName[50]; //用户名 char userPswd[16]; //用户密码 struct TaskC TaskClass[MAXTCNUM]; //待办任务类别 struct Task TaskList[MAXTASKNUM]; //待办任务...
struct MsgPackage{ //通信协议结构体
char cmd; //操作命令
int ack; //标志位
char userName[50]; //用户名
char userPswd[16]; //用户密码
struct TaskC TaskClass[MAXTCNUM]; //待办任务类别
struct Task TaskList[MAXTASKNUM]; //待办任务队列
};
采用标准socket,客户端vc++,服务端c。
客户端发送上述结构体到服务端,服务端只有MsgPackage.cmd有值.
请求帮助。
|
注意网络字节顺序
发送方发送整数前,需要使用htonl(4字节整数)或htons(2字节整数),转换为网络字节序
接收方再分别使用ntohl ntohs转换为自己的主机字节序
发送方发送整数前,需要使用htonl(4字节整数)或htons(2字节整数),转换为网络字节序
接收方再分别使用ntohl ntohs转换为自己的主机字节序
|
1、注意网络字节序问题;
2、数据结构成员的对齐;
3、在服务器端和客户端对Task、TaskC的理解是否一致。
2、数据结构成员的对齐;
3、在服务器端和客户端对Task、TaskC的理解是否一致。
|
最好把发送和接收的源码贴处理看看,可能是你对数据量处理的时候出现了问题
|
搜下 字节对齐 。
|
代码贴出来,比较直观