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

文章网建站工作室 网站建设

文章网建站,工作室 网站建设,国内网站放国外服务器,江苏恒博网络推广有限公司项目需求是 程序上 同时配置了多个服务端 设备 每隔一段时间需要 比如1分钟 连一下服务器看下是否连通 并将结果上报给平台 原来是用线程池来做的 具体大概就是 定时器到了之后 遍历设备列表 找到设备之后 通过 socket连接 发送一个指令 等待服务器返回 用来检查是…项目需求是  程序上 同时配置了多个服务端 设备 每隔一段时间需要 比如1分钟 连一下服务器看下是否连通   并将结果上报给平台  原来是用线程池来做的   具体大概就是 定时器到了之后  遍历设备列表  找到设备之后  通过 socket连接 发送一个指令 等待服务器返回 用来检查是否在线  这样的问题是 如果设备不是很多的话 还好  但是如果 有上百个设备 的话  每一轮遍历需要很长时间   后来 看了EPOLL尝试一下   相当于是改成单线程了  但是效果不是很好   基本上还是相当于单线程     测试结果感觉还是单线程在跑   后期改成协程试下看看   bool QMCY_APP::CreateEPOLL() {m_epoll_fd epoll_create1(0);if (m_epoll_fd 0){printf(epoll_create failed\n);return false;}return true; } bool QMCY_APP::Add2Epoll(std::shared_ptrIQMCY led) {int fd;auto ip led-NVR_GetIP().c_str();auto port led-NVR_GetPort();struct sockaddr_in my_addr;socklen_t peer_addr_size;fd socket(AF_INET, SOCK_STREAM | SOCK_NONBLOCK, 0);if (fd -1){printf(Add2Epoll Create socket failed\n);return false;}memset(my_addr, 0, sizeof(my_addr));my_addr.sin_family AF_INET;my_addr.sin_addr.s_addr inet_addr(ip);my_addr.sin_port htons(port);int ret connect(fd, (struct sockaddr*)my_addr, sizeof(my_addr));if (ret 0) {puts(connect successfully!);return false;}if (errno ! EINPROGRESS) printf(Add2Epoll success [%s:%d] \n,ip,port);struct epoll_event ev;ev.events EPOLLOUT |EPOLLET |EPOLLIN;ev.data.fd fd;if (epoll_ctl(m_epoll_fd, EPOLL_CTL_ADD, fd, ev) -1){printf(epoll_ctl failed\n);return false;}m_led_all.insert(std::pairint,std::shared_ptrIQMCY(fd,led));led-NVR_ResetState();return true; }bool QMCY_APP::HandleEPOLL() {int timeout 3000; auto index 0;struct epoll_event events[MAX_EVENTS];while(index m_led_all.size()*2){int nfds epoll_wait(m_epoll_fd, events, MAX_EVENTS, timeout);if (nfds 0) {printf(epoll_wait\n);} else if (nfds 0) {printf(epoll_wait timeout\n);} else {for (int n 0; n nfds; n) {printf(epoll_wait nfds:%d events:%d\n,nfds,events[n].events); if (events[n].data.fd (events[n].events EPOLLOUT)) {int connect_error 0;socklen_t len sizeof(connect_error);if(getsockopt(events[n].data.fd, SOL_SOCKET, SO_ERROR, (void*)(connect_error), len) 0){printf(getsockopt error\n);continue;}if (connect_error ! 0) {printf(fd:[%d] connect: %s\n,events[n].data.fd, strerror(connect_error));continue;}else{auto fd events[n].data.fd;auto led m_led_all[fd];printf(QMCY 00000000000000000 connect to led success [ip:%s port:%d]\n,led-NVR_GetIP().c_str(),led-NVR_GetPort());struct epoll_event ev {0};ev.events EPOLLET |EPOLLIN;ev.data.fd fd;epoll_ctl(m_epoll_fd, EPOLL_CTL_MOD, fd, ev);led-NVR_ProbeOnline(fd);}}else if (events[n].data.fd (events[n].events EPOLLIN)){char buf[BUFSIZ] {0};int nread,n 0; auto fd events[n].data.fd;while ((nread read(fd, buf n, BUFSIZ-1)) 0) { n nread; printf(n%d nread%d\n,n,nread);} if (nread -1 errno ! EAGAIN) { perror(read error); continue;} auto led m_led_all[fd];printf(11111111Read data success [ip:%s port:%d read%d]\n,led-NVR_GetIP().c_str(),led-NVR_GetPort(),n);if(n0){led-NVR_ProbeAnalyse(buf,n); }}}}index;printf(HandleEPOLL loop index %d ~~~~~~~~~~~~~~~~~\n,index);//sleep(1);}printf(HandleEPOLL end exit ~~~~~~~~~~~~~~~~~\n);return true; }bool QMCY_APP::DestroyEPOLL() {if (m_epoll_fd 0 ) {close(m_epoll_fd);}return true; }
http://www.zqtcl.cn/news/572109/

相关文章:

  • 做网站前期构架图中国建设银行手机银行网站
  • tp5企业网站开发百度云青岛vi设计公司
  • 网站建设实验原理建站之星 discuz
  • 购物网站如何备案建设部施工合同范本
  • 网站模板安装建站之星凡客
  • 有没有电脑做兼职的网站吗网站和域名区别
  • 免费html网页模板素材网站修改wordpress后台登陆
  • 男女做啊免费视频网站网站做全景图
  • 网站域名 安全网站开发语言一般是用什么
  • 麦包包的网站建设分析网站开发一般要用到哪些软件有哪些
  • 关于内网站建设的请示天津住房与城乡建设厅网站首页
  • 企业网站免费源码装修公司需要多少钱
  • 沈阳建设网站费用群晖wordpress打不开
  • jsp网站开发 pdf建设植绒衣架网站
  • 做网站接单的网站做外贸网站价位
  • 金融商城快捷申请网站模板下载汕头网站建设和运营
  • 网站建设网站备案所需资料请兼职做企业网站设计怎么收费
  • 电脑配件经营网站的建设论文邯郸市环保局网站建设项目环境
  • 那些网站可以做反链免费游戏不用登录直接玩
  • 安徽网站建设的基本步骤接外贸订单的平台
  • 那些网站可以找得到做货代的广东企业微信网站开发
  • 海宁市建设局官方网站6哔哩哔哩网页版官网在线观看
  • 泉州网站建设轩奇网讯韩国美容网站模板
  • 培训好吗网站建设wordpress手游
  • 元典科技网站建设网页设计制作图片页面
  • 网站设置什么意思无代码搭建平台
  • 织梦做的网站后台登录做网站购买域名
  • 哈尔滨网站关键词优化排名合江做网站
  • 手机网站自动适配旅游网络营销方案
  • 敦化网站开发黔东南购物网站开发设计