脚本宝典收集整理的这篇文章主要介绍了php – 处理具有前导长度值的套接字数据,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
>读取前4个字节(这是$前缀并表示消息的长度)
>检查$PRefix是否真的有4个字节的大小,如果它是一个整数
>使用$prefix的长度读取完整的$message
>检查消息是否确实具有$prefix字节的大小
$prefix = socket_read($socket,4,PHP_BINARY_READ); //No 1. //No 2: how to do the checks? $message = socket_read($socket,$prefix,PHP_BINARY_READ); //No 3. //No 4: how to do the checks?
我怎么做上述检查?
strlen
来验证您收到的二进制字符串的长度:
$prefix = socket_read($socket,PHP_BINARY_READ); if (strlen($prefix) != 4) { // not 4 bytes long }
根据您之前的问题,此二进制字符串表示32位长. Unpack就这样(使用与打包时相同的格式说明符),然后获取消息并再次使用strlen来验证长度:
$length = current(unpack('l',$prefix)); $message = socket_read($socket,$length,PHP_BINARY_READ); if (strlen($message) != $length) { // $message not the size of $length }
以上是脚本宝典为你收集整理的php – 处理具有前导长度值的套接字数据全部内容,希望文章能够帮你解决php – 处理具有前导长度值的套接字数据所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。