当前位置: 首页 > wzjs >正文

c 网站开发模式成都网站建设与开发

c 网站开发模式,成都网站建设与开发,使用 ahrefs 进行 seo 分析,深圳网站关键词排名优化文章目录 redis 部分的错误oberver_channel_message测试测试代码问题订阅命令错误--分析原因 为什么客户端还会报空json呢问题分析但是!但是!改进 redis 部分的错误 oberver_channel_message测试 测试代码 // 在独立线程中接受订阅频道的消息--存在的意义 看订阅那里 void Re…

文章目录

  • redis 部分的错误
    • oberver_channel_message测试
    • 测试代码
    • 问题
    • 订阅命令错误--分析原因
  • 为什么客户端还会报空json呢
    • 问题分析
    • 但是!但是!
    • 改进

redis 部分的错误

oberver_channel_message测试

在这里插入图片描述

测试代码

// 在独立线程中接受订阅频道的消息--存在的意义 看订阅那里
void Redis::oberver_channel_message()
{redisReply *reply = nullptr;while (REDIS_OK == redisGetReply(this->_subscribe_context, (void **)&reply)){cout<<"jajjaja"<<endl;cout<<reply->dval<<endl;cout<<reply->element<<endl;cout<<1<<endl;cout<<reply->element[0]->str<<endl;cout<<2<<endl;cout<<reply->element[1]->str<<endl;cout<<3<<endl;cout.flush();// cout<<reply->element[2]->str<<endl;cout.flush();cout<<4<<endl;cout.flush();cout<<reply->elements<<endl;cout.flush();cout<<5<<endl;cout.flush();cout<<reply->integer<<endl;cout.flush();cout<<6<<endl;cout.flush();cout<<reply->len<<endl;cout<<7<<endl;// cout<<reply->str<<endl;cout<<8<<endl;cout<<reply->type<<endl;cout<<9<<endl;cout<<reply->vtype<<endl;cout<<10<<endl;// 订阅收到的消息 是一个带三个元素的数组if (reply != nullptr && reply->element[2] != nullptr && reply->element[2]->str != nullptr){// 给业务层上报通道上发生的消息_notify_message_handler(atoi(reply->element[1]->str), reply->element[2]->str);/*数组的下标1, 2对应 redis 回应的 (2)(3)1) "message"2) "13"3) "hello"*/}freeReplyObject(reply);}cerr << ">>>>>>>>>>>>>>>>>observer_channel_message quit<<<<<<<<<<<<<<<<<<<<" << endl;
}

问题

仅是个人理解, 记录一下,

cout<<reply->element[2]->str<<endl;

cout<<reply->str<<endl;

这两行 不注释, 服务器那边 会 的 打印 会停到 这两句的上一句

源码 还没看, 推测是, reply 里面的 str, , 做了 特殊处理, 应该是为了安全吧, 不让看,不让访问, 怎么输入, 都看不出来, 注释掉后, 会每通信一次, 就会打印一轮

订阅命令错误–分析原因

实际就是 昨天总结的那样, 就是访问 非法内存导致 段错误, 段错误触发的 SIGSEGV 信号 会导致 整个进程 崩溃

为什么客户端还会报空json呢

问题分析

char buffer[1024] = {0};               // 接收服务器返回的数据
len = recv(clientfd, buffer, 1024, 0); // 接收数据
cout<<"recv"<<endl;
cout<<buffer<<endl;
if (len < 0)
{cerr << "recv error" << endl;
}

这部分代码, 按理说, 服务器那边段错误, 也算是 异常退出

代码 应该终止在 recv函数这里,

但是!但是!

段错误崩溃 recv() 在本地会返回 0,就跟对方正常关闭是一样的!!!

这是最关键的, 也因为这个, buffer 本身就是空, 往后走, json反序列化 报 空json, 也就报 json空 的 错误了

改进

char buffer[1024] = {0};               // 接收服务器返回的数据
len = recv(clientfd, buffer, 1024, 0); // 接收数据if (len < 0 || len == 0)
{if(len == 0){cout<<"server quit!"<<endl;return 0;}else{cerr << "recv error" << endl;}}

文章转载自:

http://EygsBRgU.LmmyL.cn
http://Oyh3YK1A.LmmyL.cn
http://Qu3fm580.LmmyL.cn
http://jAB1031u.LmmyL.cn
http://3BLg4ZYv.LmmyL.cn
http://qrxhbT26.LmmyL.cn
http://EcbMO3K2.LmmyL.cn
http://aFP5f5Bm.LmmyL.cn
http://2BeFVq2K.LmmyL.cn
http://X0ld98Mw.LmmyL.cn
http://adpJPMKu.LmmyL.cn
http://HaDyhgyw.LmmyL.cn
http://9cG0aSpm.LmmyL.cn
http://hHASpHit.LmmyL.cn
http://bmmukjte.LmmyL.cn
http://5vDWNaod.LmmyL.cn
http://NYvnp3iS.LmmyL.cn
http://XeFcOwSY.LmmyL.cn
http://N1co31S7.LmmyL.cn
http://aMuPiDQY.LmmyL.cn
http://4xNZnCyw.LmmyL.cn
http://UDkFgI5A.LmmyL.cn
http://Y5SjYkei.LmmyL.cn
http://smPwqodb.LmmyL.cn
http://OqtLK8lC.LmmyL.cn
http://WJqGsQm9.LmmyL.cn
http://V3fgc8wI.LmmyL.cn
http://lHHvyHyd.LmmyL.cn
http://r2mGiHi9.LmmyL.cn
http://N5taR8ZP.LmmyL.cn
http://www.dtcms.com/wzjs/601515.html

相关文章:

  • 合租网站设计wordpress识别环境的文件夹
  • 山东网站建设哪家有天津网站建设定制公司
  • 免费自助网站建设美食网站的作用
  • 网站开发和软件开发哪个好做的好的排版网站
  • 东莞模板网站制作哪家好汕头市住房和城乡建设局
  • 响应式全屏网站模板自己创建个人免费网站
  • 电脑网站与手机的区别是什么郴州新网手机版
  • 看装修效果图哪个网站好网络服务的工具
  • 电商网站制作wordpress 网站访问量
  • python 安装wordpress网站优化价格
  • 5个免费安全的资源网站长沙公司制作网站费用
  • 网站建设与制作与维护wordpress背景设置
  • 白云建设网站惠阳住房和城乡建设局网站
  • 网站营销队伍营销型网站费用
  • 专业的网站建设宝安西乡网站开发PHP留言本
  • 深圳外贸网站建设制作软件定制开发app
  • 视频主持网站建设深圳市网站建设有限公司
  • 网站挂马黑链检测清除工具wordpress清理插件
  • 三合一网站建设平台电商网站 支付宝接口
  • 快照网站网站建设肆金手指排名9
  • 郴州网站网络推广平台手机网站绑定域名
  • 网站建设公司服网页设计图片排列关系
  • 网站建设与管理用什么软件深圳怎么制作公司网页
  • 西安跨境电商平台网站小程序是什么意思
  • vue做的网站大全咨询工程师
  • 一站式媒体发稿平台wordpress类目权限
  • 网站内建设的发展网站建设与管理专业的行业发展
  • 硅藻泥网站怎么做成都网站建设开发公司哪家好
  • 如何防止网站被注册asp.net做音乐网站
  • 专业建材网站建设小程序代理商好做吗