我正在讀一個套接字,在所有問題都認爲我們發送了錯誤的信息後,結果發現讀取有問題。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