关于魅族给予webSocket数据包的问题

本文介绍了一种在魅族手机上使用WebSocket通信时遇到的size不正确问题及其解决方案。通过添加看似无用的代码或改变数据构造方法来解决魅族手机特有的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


在用魅族手机进行websocket通信的时候,遇到一个问题:size 不正确。其他手机没问题


方式一:添加无用代码
//*********************************在未找到魅族手机出现是构造数据错误的原因之前,此处代码误删除******************************************
    //        JJLogger.logInfo(TAG,"dataBytesLen="+dataBytesLen + ", sizeEndPos=" + sizeEndPos + ", bodyEndPos=" + bodyEndPos);
    //        JJLogger.logInfo(TAG,"登陆cmd =  :"+LOGON_SEND);
    //        try {
    //            Thread.sleep(1000);
    //        } catch (InterruptedException e) {
    //            e.printStackTrace();
    //        }
    for(int jj = 0; jj < 1; jj++) {
             /*
            * 此部分代码,为了解决魅族手机发送数据错误而写;
            * 具体原因不明;
            * 加一条log 或者 休眠等;均可解决问题
            * */
        int aaa = 0;
        aaa = 1000;
        aaa = aaa + 1000;
    }
//*********************************在未找到魅族手机出现是构造数据错误的原因之前,此处代码误删除******************************************

    for (int i = 0; i < dataBytesLen; i++) {
        if (i < sizeEndPos) {
            data[i] = dataSizeBytes[i];//Size
        } else if (i >= sizeEndPos && i < bodyEndPos) {
            data[i] = cmdBytes[i - sizeEndPos];
        } else {
            data[i] = bodyBytes[i - bodyEndPos];
        }

}

方式二:改用系统的方法构造data数据

//data
byte[] data = new byte[dataBytesLen];

System.arraycopy(dataSizeBytes,0,data,0,4);
System.arraycopy(cmdBytes,0,data,4,4);
System.arraycopy(bodyBytes,0,data,8,bodyBytesLen);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值