为了解决上述问题,实现准确的接受数据包,需要为数据包设置一定的机构,如下:
1、数据包大小占4字节,值为 4+n 字节
2、数据包类型占4字节,值为包的类型
3、数据占n字节,内容内传输的数据
在接受数据包时,先请求接受4个字节,当4个字节全收到时,可得出数据包类型和数据的总长度, 然后请求接受4+n字节,当4+n字节全收到时,就可以把这8+n个字节的时间拼成一个完整的数据包。
2)通信协议(数据包分析)
接受到一个完整的数据包后,就对其进行分析,取出,数据包的类型,然后根据不同的类型进行处理,主要包类型结构如下:
包类型 包内容
登陆 用户名长度 + 用户名
用户列表 用户数量 + 用户名若干
发送消息 消息长度 + 消息内容
私聊 目标用户名 + 消息
登录结果 标志(T/F)+ 原因
心跳包
为了判断用户是否断开连接,可以设定一心跳包,即服务器每隔一段时间向客户端发一次,若连续多次未收到回应,则断定此客户端中断了连接。
四、程序代码
1)开发环境
操作系统:Windows 7
IDE:Visual Studio 2008
语言:C++
框架:MFC
2)基本流程图
上一页 [1] [2] [3] [4] [5] [6] 下一页