在PHP中从套接字流中读取单个字节

3
$data = socket_read($this->socket, 5);

    $counter = strlen($data); 
    for($i = 0; $i < $counter; ++$i) { 
        $char = (int)$data[$i]; 
        echo "\nByte $i: $char\n"; 
    }

客户端向服务器发送两个字节,即使我读取5个字节,它仍然只接收到两个字节。问题在于字节读取为0,没有正确读取。如何读取实际的字节/字节数组。
提前致谢!
1个回答

2
如果客户端只发送了两个字节,为什么你要五个?尝试使用 socket_recv() 来获取读取的字节数的明确返回值。请注意保留 HTML 标签。

我并不需要五个,只是想证明即使放入五个,它也只读了两个。现在我将使用socket_recv进行测试。 - Mitchell M
哦,不是这样的。你得到了两个字节。这是 PHP 字符串的特殊性质让你感到困惑。 - Nikolai Fetissov
取决于这些字节中包含的内容。它是一个字符串、一个整数还是其他什么? - Nikolai Fetissov
也许是吧。我在 PHP 中篡改这种类型的东西非常新。如果我有两个字节存储为变量“$var”中的字符串,你能给我一个使用 unpack 的示例吗?当前 echo 时该字符串看起来像这样:http://i.imgur.com/Wcu4z.png - Mitchell M
是的,PHP也不是我的第一语言 :) - Nikolai Fetissov
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接