scoket 客户端和服务端通信,如何封装自定义的数据包?
我的封装方法、
客户端和服务端的数据包格式
Struct Message
{
int nType;
char buf[1024];
}
客户端:CMessage me; me.nType=1, strcpy(buf,”wang 12111”);//用户名和密码字符串
send(socket, (char*)&me,sizeof(Message),0),
每次发送总数字节数总数sizeof(Message)。
服务端:CMessage me ; recv(socket,(char*)&me, sizeof(Message),0);
服务端每次接受字节数总数sizeof(Message)。
Switch(me.nType)//根据消息类别调用对应处理函数
{
Case 1:OnUserLogin(me.buf) //参数为Message的 buf变量。
Case 2
}
感觉这样做很方便,但是每次接受和发送的字节数总数最大值,可能效率不高吧。
但书上说一般采用如下格式封装一次要发送的信息:
总长度 消息类别 数据
但具体客户端的发送和服务端的接受代码是如何的呢?
能根据我上面的例子,给出一份简单的代码吗?谢谢了