|
网络通信中发送的都是数据我们定义为结构体这样方便我们更直观的操作信息.发送的时候我们定义一个全局的SENDBUFFER[10000]的CHAR 数组;char sendbuffer[10000];一 个客户端和服务端都公用的结构体struct NetMessageHead{&n消息英语bsp; int m_messag消息英语esize;//这个是消息长度 &定义的英文nbsp; int m游戏_MainID ;//协议编号(如果是1是大厅消息,如果是2是游结构式戏消息,如果是3是系统发定义域的表示方法送消息等等,这个可以自己写) int m_smallID;//2级编号 ........;//还可以在下面自己定义其定义法求极限他信息.} 然后游戏里面我们可以定义一个消息比如struct Gam游戏名字古风诗意eStart{ int m_chaircount ;//开始人数; int m_paicardcout;//牌的数目 ......//等消息的格式等其他变量}下消息的拼音面就是发送的时候了比如:/信息素变异/实例化一个结构GameSt消息免打扰还能收到消息吗art m_gamestart;m_gamestart.m消息的拼音_chair消息范文count =4;//4个人玩游戏m_ga定义关系漫画m定义关系estart.m_paicardcout = 13;//13张牌 //把这个发送缓冲的地址赋给消息头 NetMessageHead * pNetHead=(NetMessageHead *)(sendbuffer); pNetHead-&g游戏王决斗链接t;m_messagesize= s结构izeof(NetMessageHead)+sizeof(GameS消息的格式tart);//复制开始结构的信息到消息头地址的后面 消息已发出但被对方拒收什么意思;if (&m_gamestart!=NULL) Copy定义域和值域Memory(pNetHead+1,&m_游戏店gamestart,sizeof(GameStart));使用SOCKET 开始发送sendbuffer即可;接收端通过SOCKET接收到信息放到一个结构力学定义好的数组中比如char m_reciveBuf[10000];NetMessageHe信息技术ad * pNetHead1=( NetMessageHea消息的格式d *结构工程师)m_reciveBuf;先判定如果 pNetHead1->m_messa信息素gesize > sizeof(Ne结构化面试万能模板tMessageHead) 那么证明这个游戏后面游戏还有结构体然后我们再根据pNetHead1->m_MainID 判定后面消息的类型,是属于大厅的消息,还是游戏的消息,还是其他.如果是游戏信息,然后再根据p消息英语NetHead1->m_消息的拼音smallID来判定是开始信息还是结束信息,还是信息工程大学游戏过程中其他信息,这里我们这个是开始信息 所以应该是GameStart * m_game = (NetMess * )(pNetHead1+1);m_game ->m_chaircount 应该就是我们先发送的4了,其他消息结果于此类似.SOCKET基于IO完成端口来使用是目前主流的服务器通信架构,下一篇再总结一下IO完成端口的使用的基本思想吧.免得搞忘记求.
|
|