再谈消息包和几张图
来源:互联网 发布:sql去重 编辑:程序博客网 时间:2024/06/05 09:20
1048576 内部server之间 send recvbuffer大小
32767 gateserver对AS客户端之间 send recvbuffer大小
要发消息,触发发送事件,那么把现在sendlist的消息发送完,如果长度大于sendbuffer长度,那么就发送最大的sendbuffer
问:一个消息不是断了吗?
答:记录位置,记录消息体写到哪了 下次发送的时候继续从记录位置往后的写入
读的时候取出来的数据可能 小于头 4个字节,可能大于4 ,每次receive从内核取出来放到应用层不一定就是一个完整的4+xxx的包,可能只取了一部分,如果这次一开始小于4,那么不解析,第二次调receive,得到50字节,因为上次比如只取了1字节,这次就先取三个字节,然后解析这四字节,比如100,0 就说明上面图里面的a是100,然后解析后面的,但是这次后面的只剩下50-3=47字节,那么读完47 。第二次receive到的字节,比如是200,那么就取前面的53字节,这53字节是作为上次剩下的,读完53,然后剩下的 再从头4字节解析
里面的消息体124+xx也是一样,每次读到的未必读完,比如得到消息体长度50,那么后面读,但是要判断后面你能不能读50字节,有可能再一个大包里面,有可能不在,如果根据大包的包头算出来本大包后面只有40字节,那么后面剩下的10字节肯定是在下一个大包了,得先解析下一个大包的头4个字节,然后后面的10个字节才是上一个消息的, 否则直接度50个作为消息,后面就乱了
要判断各种情况,一个消息体(比如sm_move)接没接收完,读到哪了,以及一个大包有没有接受完,接到哪了,
要注意这两个关键数字
阅读全文
0 0
- 再谈消息包和几张图
- 关于消息封包和拆包
- 有关TCP和UDP 粘包 消息保护边界
- 有关TCP和UDP 粘包 消息保护边界
- 有关TCP和UDP 粘包 消息保护边界
- TCP和UDP 粘包 消息保护边界
- TCP和UDP的“保护消息边界”(粘包、半包)
- 消息和消息总线
- 消息和消息队列
- java并发包消息队列
- 网络游戏中消息包结构
- 解密陌生人(4)--客户端和服务器间消息包构造
- 为一个包创建消息(.msg)和服务(.srv)
- 关于 包、帧、数据报、段和消息 的概念区别
- 消息和消息处理之消息循环
- 消息和消息处理之消息处理
- 关于消息和消息队列
- windows消息和消息队列
- 相机对焦和调焦距的区别是什么 ?
- 【软考】课本--章节整理
- python(二)mac环境(macOS10.12.6)下的python3.6使用mysql
- PHP上传图片并缩放
- ZOJ
- 再谈消息包和几张图
- IE兼容性问题
- Longest Substring Without Repeating Characters--LeetCode
- java中的字符,字符串,数字之间的转换
- linux初级命令
- TCP协议下的流量估算
- rpm方式安装Mysql
- 在Spring应用中发布Webservice服务
- NYOJ-ACM-Coin Test