在PHP中从套接字流读取单个字节 $data=socket\u read($this->socket,5); $counter=strlen($data); 对于($i=0;$i

在PHP中从套接字流读取单个字节 $data=socket\u read($this->socket,5); $counter=strlen($data); 对于($i=0;$i,php,sockets,bytearray,byte,Php,Sockets,Bytearray,Byte,客户端向服务器发送两个字节,即使我读取了5,它仍然只接收2个字节。问题是字节的读数为0。它没有正确地阅读它。如何读取实际的字节/字节数组 提前谢谢 如果客户端只发送了两个字节,为什么要发送五个?尝试改用获取读取字节的显式返回值。我不想要五个,我只是演示了即使放入五个字节,它也只读取两个。我现在用socket\u recv测试。嗯,不,你得到两个字节。PHP字符串的特性让您感到困惑。好的,所以我将代码更改为使用socket_recv,并设置了一个变量。如何读取这两个字节的实际值?我很困惑,这取决于

客户端向服务器发送两个字节,即使我读取了5,它仍然只接收2个字节。问题是字节的读数为0。它没有正确地阅读它。如何读取实际的字节/字节数组


提前谢谢

如果客户端只发送了两个字节,为什么要发送五个?尝试改用获取读取字节的显式返回值。

我不想要五个,我只是演示了即使放入五个字节,它也只读取两个。我现在用socket\u recv测试。嗯,不,你得到两个字节。PHP字符串的特性让您感到困惑。好的,所以我将代码更改为使用socket_recv,并设置了一个变量。如何读取这两个字节的实际值?我很困惑,这取决于这些字节中的内容。它是一个字符串,一个整数,还是其他什么?数据是两个单独的字节,需要单独读取,它不是短的。
$data = socket_read($this->socket, 5);

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