国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

自定義協(xié)議input()接收?qǐng)?bào)文返回給decode時(shí) return卡住

chenStudy

bug描述

自定義協(xié)議在input方法里面接收客戶端傳入報(bào)文,隨后return給 decode()方法時(shí)卡住了,要過(guò)幾分鐘才往下執(zhí)行業(yè)務(wù)代碼,有誰(shuí)知道是什么原因?qū)е侣?/p>

程序代碼或配置

 public
    static function input($recv_buffer, ConnectionInterface $connection)
    {

        $tempdata = bin2hex($recv_buffer);
        echo "=========================收到上報(bào)數(shù)據(jù)==================== ";
        $stateStr = substr($tempdata, 0, 4);
        if(strcasecmp($stateStr, "7d7d") == 0){
            $pos = strpos($recv_buffer, "0752");
            if ($pos === false) {
                return 0;
            }
            // 在這里程序會(huì)卡住不往下執(zhí)行
             return $pos;

        }
        return false;

期待的結(jié)果及實(shí)際結(jié)果

期望接著往后執(zhí)行

系統(tǒng)環(huán)境及workerman/webman等具體版本

Workerman version:3.5.31
PHP version:7.3.32
截圖
接收到報(bào)文后不往下執(zhí)行decode()方法,求解

1024 1 0
1個(gè)回答

six

input 里打印下 $tempdata ,可能數(shù)據(jù)不全。
input里每個(gè)返回值都打印下,看下返回的什么,是不是返回的0 或者 false

  • chenStudy 2023-01-06

    返回的是7d7d00000001000016001c010c05daff3238394650512154170756312e302e30300000000000000752這一串然后就卡住了

  • six 2023-01-06

    input寫的不對(duì),架設(shè)完整的數(shù)據(jù)長(zhǎng)度為41個(gè)字節(jié),應(yīng)該返回41。但是你調(diào)用bin2hex()后數(shù)據(jù)變成82個(gè)字節(jié),然后你`$pos = strpos($recv_buffer, "0752");返回長(zhǎng)度$pos值為78,是錯(cuò)誤的值。你應(yīng)該返回 ($pos + 4)/2;是真實(shí)的長(zhǎng)度。

  • six 2023-01-06

    返回的長(zhǎng)度是78,但實(shí)際長(zhǎng)度是41,數(shù)據(jù)收不全,所以一直無(wú)法調(diào)用decode了

  • chenStudy 2023-01-06

    我去還真是,難怪我在win系統(tǒng)上面用工具測(cè)試是可以的,因?yàn)橛霉ぞ咧苯影l(fā)送的就是上面這種明文,用設(shè)備去調(diào)試發(fā)送的是ASCII格式要轉(zhuǎn)換成16進(jìn)制,非常感謝,謝謝謝謝

年代過(guò)于久遠(yuǎn),無(wú)法發(fā)表回答
??