c++ 通信发送结构体

自助开通VIP,整站资源任意下载
网络通信中发送的都是数据我们定义为结构体这样方便我们更直观的操作信息.
发送的时候我们定义一个全局的SENDBUFFER[10000]的CHAR 数组;
char sendbuffer[10000];
一 个客户端和服务端都公用的结构体
struct NetMessageHead
{
    int m_messagesize;//这个是消息长度
    int m_MainID ;//协议编号(如果是1是大厅消息,如果是2是游戏消息,如果是3是系统发送消息等等,这个可以自己写)
    int m_smallID;//2级编号
    ........;//还可以在下面自己定义其他信息.
然后游戏里面我们可以定义一个消息比如
struct GameStart
{
    int m_chaircount ;//开始人数;
    int m_paicardcout;//牌的数目
    ......//等等其他变量
}
下面就是发送的时候了
比如:
//实例化一个结构
GameStart m_gamestart;
m_gamestart.m_chaircount =4;//4个人玩游戏
m_gamestart.m_paicardcout = 13;//13张牌
 //把这个发送缓冲的地址赋给消息头
 NetMessageHead * pNetHead=(NetMessageHead *)(sendbuffer);
 pNetHead->m_messagesize= sizeof(NetMessageHead)+sizeof(GameStart);
//复制开始结构的信息到消息头地址的后面
 if (&m_gamestart!=NULL) CopyMemory(pNetHead+1,&m_gamestart,sizeof(GameStart));
使用SOCKET 开始发送sendbuffer即可;
接收端
通过SOCKET接收到信息放到一个定义好的数组中比如
char m_reciveBuf[10000];
NetMessageHead * pNetHead1=( NetMessageHead *)m_reciveBuf;
先判定如果 
pNetHead1->m_messagesize > sizeof(NetMessageHead) 那么证明这个游戏后面还有结构体
然后我们再根据pNetHead1->m_MainID 判定后面消息的类型,是属于大厅的消息,还是游戏的消息,还是其他.
如果是游戏信息,然后再根据pNetHead1->m_smallID来判定是开始信息还是结束信息,还是游戏过程中其他信息,
这里我们这个是开始信息 所以应该是
GameStart * m_game = (NetMess * )(pNetHead1+1);
m_game ->m_chaircount  应该就是我们先发送的4了,其他消息结果于此类似.
SOCKET基于IO完成端口来使用是目前主流的服务器通信架构,下一篇再总结一下IO完成端口的使用的基本思想吧.免得搞忘记求.


c++ 通信发送结构体 服务端 客户端 游戏 技术文章  第1张

① 本网站名称及网址:速群资源分享网 | www.suqun.net
② 本网站资源来源于网络收集,如有侵权,请联系站长进行删除处理。
③ 分享目的仅供大家学习和交流,请不要用于商业用途,否则后果自负。
④ 如果你也有好源码或者教程,可以联系小编,有钻石奖励和额外收入。
⑤ 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解。
⑥ 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需。
⑦ 本站资源大多存储在云盘,如发现链接失效,请联系客服,我们会第一时间更新。
速群棋牌源码网 » c++ 通信发送结构体

发表评论

欢迎 访客 发表评论

VIP会员尊享专属特权,真正的海量,无套路,无限量下载!

游戏演示 联系客服