首部五个字节网络字节序pack的int+json数据格式

3p大法好

为什么我把 首部四个字节 改成五个字节或者其他长度字节,就一直无法返回正确结果?只能用4个字符?求大大解答

3550 5 0
5个回答

3p大法好
    public function dealInput($recv_buffer){
        // 接收到的数据长度
        $recv_len = strlen($recv_buffer);
        // 如果接收的长度还不够四字节,那么要等够四字节才能解包到请求长度
        if($recv_len < 4)
        {
            // 不够四字节,等够四字节
            return 4 - $recv_len;
....省略

public function dealProcess($buff){
        // 去掉首部四个字节,得到完整json字符串
        $json_str = substr($buff, 4);
....省略

这里我只是将客户端和服务端的4 改成了5 或者其他数字 就无法响应

  • 暂无评论
walkor

一个int类型占用内存为4字节,是固定不变的

  • 暂无评论
3p大法好

那能否改成接收string类型的首部,我现在是不理解为何只能接收4字节int类型 文档上也没看到说明,可能我看的不仔细吧,请告知谢谢!

  • 暂无评论
walkor

协议可以按照自己的需求定制,当然可以string类型的头部。
你看的是workerman2.x,建议使用workerman3.x,并参考3.x手册协议定制部分

  • 暂无评论
3p大法好

谢谢~~。。这就去看

  • 暂无评论
年代过于久远,无法发表回答
🔝