我正在读一个套接字,在所有问题都认为我们发送了错误的信息后,结果发现读取有问题。UNPACK()4字节整数PHP套接字
的理念是:
1a- Get 4 bytes, unpack (95).
2a- Get 95 next bytes.
1b- Get 4 bytes, unpack (80).
2b- Get 80 next bytes.
我现在不是拆包错了,或者有事情发生。我得到的输出是:
1a- get 4 bytes, unpacked=0.
2a- get 0 next bytes. (no return)
1b- get 4 bytes, unpacked=95.
2b- get 95 bytes, get $message.
$消息丢失前2个字节,所以我认为它在最后添加2,从4个字节,这应该是未来的重复服用。我认为问题在0字节,或解包是错误的。
while (!feof($connect)) {
$i='';
$size_get=fgets($fconnect, 4);
$size=unpack('C',$size_get);
echo fgets($connect, $size[1]) . PHP_EOL;
}
不流通解压“C”告诉它你想解开一个单个字符?我想你想通过它“L”,无符号长。 – CmdrMoozy
传递C可能不是正确的形式,但如果我var_dump($大小) – user1695981
L返回布尔(假)如果你打印出'bin2hex($ size_get);',它似乎包含正确的数据?另外请注意,'unpack'返回一个数组,而不是一个单一的值。 – CmdrMoozy