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

长沙的互联网网站公司做品管圈网站

长沙的互联网网站公司,做品管圈网站,花钱做的网站本人可以关闭吗,广告公司运营模式和营销方式目录 登录状态业务层代码数据模型层代码记录用户的连接信息以及线程安全问题客户端异常退出业务 登录状态 登录且状态变为online 业务层代码 #include chatservice.hpp #include public.hpp #include string #include muduo/base/Loggi… 目录 登录状态业务层代码数据模型层代码记录用户的连接信息以及线程安全问题客户端异常退出业务 登录状态 登录且状态变为online 业务层代码 #include chatservice.hpp #include public.hpp #include string #include muduo/base/Logging.h #include muduo/net/TcpServer.h #include muduo/net/EventLoop.h using namespace muduo; using namespace std;//获取单例对象的接口函数 ChatService* ChatService::instance() {static ChatService service;return service; }//注册消息以及对应的Handler回调操作 ChatService::ChatService() {//要想实现回调就需要先进行注册通过绑定对象_msgHandlerMap.insert({LOGIN_MSG,std::bind(ChatService::login,this,_1,_2,_3)});_msgHandlerMap.insert({REG_MSG,std::bind(ChatService::reg,this,_1,_2,_3)});}//获取消息对应的处理器 MsgHandler ChatService::getHandler(int msgid) {//记录错误日志,msgid没有对应的事件处理回调auto it_msgHandlerMap.find(msgid);if(it_msgHandlerMap.end()){//返回一个默认的处理器空操作return [](auto a,auto b,auto c){LOG_ERRORmsgid:msgidcan not find handler!;};}else{return _msgHandlerMap[msgid];}}//处理登录业务 void ChatService::login(const TcpConnectionPtr conn,json js,Timestamp) {int idjs[id].getint();string pwdjs[password];User user_userModel.query(id);if(user.getId()iduser.getPwd()pwd){if(user.getState()online){//该用户已经登录不允许重复登录json response;response[msgid]LOGIN_MSG_ACK;response[errno]2;response[errmsg]该账号已经登录请重新输入新账号;conn-send(response.dump());}else{//登录成功更新用户状态信息 state offlineonlineuser.setState(online);_userModel.updateState(user);json response;response[msgid]LOGIN_MSG_ACK;response[errno]0;response[id]user.getId();response[name]user.getName();conn-send(response.dump());}}else{//该用户不存在登录失败json response;response[msgid]LOGIN_MSG_ACK;response[errno]1;response[errmsg]用户名或者密码错误;conn-send(response.dump());} } //处理注册业务 void ChatService::reg(const TcpConnectionPtr conn,json js,Timestamp) {string namejs[name];string pwdjs[password];User user;user.setName(name);user.setPwd(pwd);bool state_userModel.insert(user);if(state){//注册成功json response;response[msgid]REG_MSG_ACK;response[errno]0;response[id]user.getId();conn-send(response.dump());}else{//注册失败json response;response[msgid]REG_MSG_ACK;response[errno]1;conn-send(response.dump());} } 数据模型层代码 //更新用户的状态信息 //根据用户号码查询用户信息 bool UserModel::updateState(User user) {//组装sql语句char sql[1024]{0};sprintf(sql,update user set state %s where id%d,user.getState().c_str(),user.getId());MySQL mysql;if(mysql.connect()) {if(mysql.update(sql)){return true;}}}但是问题就是一登录成功就断开连接了 记录用户的连接信息以及线程安全问题 所以需要保存连接信息 这个表会被多线程访问所以要考虑它的线程安全问题 上互斥锁 CSTL里面并没有考虑线程安全问题 数据库的增删改查的并发操作是由MYSQL来保证的不需要担心去上锁啥的。而线程安全需要保证 大括号表示作用域 客户端异常退出业务 在没有任何响应的情况下连接突然断开了。比如网络连接问题 如果异常退出并没有发送合法的json。用户状态如何 这个业务完成两件事一个是把存储用户通信连接的哈希表删除该用户的键值对2、将用户在数据库里的状态信息由online变成offline。 当出了大括号之后锁就自动释放
http://www.hkea.cn/news/14310751/

相关文章:

  • 使用oss做静态网站企业宣传片模板直接套用
  • 有做学历在网站能查的到的九江seo优化
  • 定制网站制作服务商做亚马逊一年赚了60万
  • 做石油期货看什么网站东莞网站优化推广方案
  • 签证中心网站建设免费咨询宠物医生在线
  • 教育类手机网站模板丽水专业网站建设哪家好
  • 免费电视剧网站大全在线观看施工企业经营情况汇报材料
  • 有没有做语文题的网站河北住房城乡建设厅官方网站
  • app建设网站公司简介切图网站建设
  • flash网站系统游戏在线玩
  • html5网站建设加盟58网站开发要多少钱
  • c2c网站建设系统网站软件有哪些
  • 网站开发如何儿童早教网站模板
  • 宣武富阳网站建设建设刷会员网站
  • 企业网站建设的经验心得wordpress 搜索小工具栏
  • 网站建设方案怎么做企业网站开源系统
  • 安徽省两学一做网站专栏wordpress密码hello
  • 免费推广网站有哪些有哪些单页面网站有哪些内容
  • vue.js做个人网站数据库和网站开发
  • 网站制作寻找客户注册个人网站要钱吗
  • 企业免费网站模板国外域名抢注网站
  • 做网站条件网站登录页面怎么做
  • 建html5网站各行各业网站建设
  • wordpress网站开发代码asp做企业网站很好啊
  • 安徽网站关键词优化设计找版面网站
  • 广东外贸网站推广网址怎么做成快捷方式
  • 查建设公司人员是那个网站wordpress删除的菜单找回
  • 车网站建设策划软件开发招聘
  • 南通科技网站建设龙之向导免费网站
  • 电子商务网站建设考试试题免费外贸网站建设