@狮子的魂 你好,想跟你请教个问题:主要是二进制字节流,tcp传输一次可能有多个包或者半个包,那我在php这边怎么解包呢?保证收到有效的数据包 丢弃无效的数据包呢?希望大神有时间能回答一下,不胜感激 工作中遇到的问题,,,,,,新手 不懂解决
"
数据包的解析是相对数据包的打包来定的,如果是比较标准的应用打包协议,例如:http,ftp等按照标准来解析就行了,如果是自定义打包的数据格式,首先要明确对方打包数据的格式,接收方才好分析,例如如下自定义数据打包协议:
+---------+----------+--------------------+
| 1 byte | 2 bytes | dynamic bytes |
+---------+----------+--------------------+
数据类型 数据长度 数据字节码
每个数据包的第一个字节表示数据的自定义类型(例如:文字,还是图片,还是视频),接下来的两个字节表示数据的长度,再后面就是实际发送的数据。
那么你在接收的时候,就可以先拿到套接字的第一个字节得到数据包的类型(判断数据是否需要?),再接下来获取两个字节转换成整数得到后面数据的长度len,再通过后续读取len个字节来得到数据包的实际数据!
"版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。