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

自定義協(xié)議類實現(xiàn)Workerma/ProtocolInterface接口啟動時報找不到

chenStudy

問題描述

自定義協(xié)議類實現(xiàn)ProtocolInterface接口啟動時報找不到Workerman下的ProtocolInterface這個接口實際上是有的

程序代碼

<?php

namespace Protocols;

use App\Models\DeviceInfo;
use App\Service\Admin\DeviceInfoService;
use App\Utils\CRC16Util;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Redis;
use Workerman\Connection\ConnectionInterface;
use Workerman\Protocols\ProtocolInterface;

class DeviceHandle implements ProtocolInterface
{
    public
    static function input($recv_buffer, ConnectionInterface $connection)
    {
        $tempdata = bin2hex($recv_buffer);
        echo "=========================收到上報數(shù)據(jù)==================== " . PHP_EOL . $tempdata . PHP_EOL;
        if (self::isMagicStr($tempdata) && strlen($tempdata) < 24) {
            return 0;
        }
        $messageData = $tempdata;
        // 是否以7d7d開頭--用于粘包處理
        while (self::isMagicStr($messageData)) {
            // 獲取報文長度
            $length = substr($messageData, 18, 4);
            $dataLength = (hexdec($length) * 2);//獲取命令字節(jié)到報文結(jié)束的長度(除去CRC校驗的兩字節(jié))
            //截取數(shù)據(jù)報文
            $data = substr($messageData, 22, $dataLength + 4); // 拆包傳輸問題
            $dataLen = strlen($data);
            if ($dataLen < $dataLength) {
                // 接收的不是一個完整的報文
                return 0;
            }
            $checkData = substr($messageData, 4, 14 + $dataLen); // 獲取需要校驗的數(shù)據(jù)
            $crcCheckResult = dechex(CRC16Util::crc16($checkData, "hex", 0x1021, 0, 0, true, true));
            $crcJoin = DeviceInfoService::crcLengthJoin($crcCheckResult);
            $crcCheckResult = $crcJoin . $crcCheckResult;
            echo "CRC校驗碼為:" . $crcCheckResult . PHP_EOL;
            if (substr($data, $dataLen - 4) != $crcCheckResult) {
                return false;
            }
            // 截取固定消息頭
            $fixation = substr($messageData, 0, 22);
            Log::info("截取報文數(shù)據(jù)===> " . $fixation . $data);
            return (strlen($fixation) + $dataLen) / 2;
        }
        return false;
    }

    /**
     * 判斷是否7d7d開頭
     * @param $message
     * @return bool
     */
    public static function isMagicStr($message): bool
    {
        $stateStr = substr($message, 0, 4);
        return strcasecmp($stateStr, "7d7d") == 0;
    }

    public
    static function decode($recv_buffer, ConnectionInterface $connection)
    {
        $tempdata = bin2hex($recv_buffer);
        return $tempdata;
    }

    public
    static function encode($data, ConnectionInterface $connection)
    {
        // TODO: Implement encode() method.
        return $data;
    }
}

截圖報錯信息里報錯文件相關(guān)代碼

截圖

945 1 0
1個回答

法師

引入composer的自動加載

require_once __DIR__ . '/vendor/autoload.php';
  • 暫無評論
年代過于久遠,無法發(fā)表回答
??