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

类似聚划算的网站怎么建设h5浏览器

类似聚划算的网站怎么建设,h5浏览器,深圳网站建设服,wordpress在线前言 场景#xff1a;客户端程序需要实时知道和服务器的连接状态。比较通用的做法应用层是采用心跳机制#xff0c;每隔一端时间发送心跳能回复说明服务器正常。 实际应用场景中#xff0c;服务端和客户端并不是一家厂商的#xff0c;比如说笔者这种情况#xff0c;服务端…前言 场景客户端程序需要实时知道和服务器的连接状态。比较通用的做法应用层是采用心跳机制每隔一端时间发送心跳能回复说明服务器正常。 实际应用场景中服务端和客户端并不是一家厂商的比如说笔者这种情况服务端是其他厂商应用层协议没有心跳机制客户端显示的连接状态需要客户端自己处理。 笔者最开始使用的QTcpSocket进行socket连接在客户端程序监听下面3个信息。 void disconnected() void error(QAbstractSocket::SocketError socketError) void stateChanged(QAbstractSocket::SocketState socketState)笔者这边的测试结果是第一次关闭服务器端口客户端能检测到error信号能获取到错误信息 The remote host closed the connection 再次启动服务器端口客户端使用同一个socket再次成功连接后再次关闭服务器端口就检测不到断开信号自此之后就再监测不到socket被断开的情况。 参考了网络上1篇文章 https://www.cnblogs.com/tomato0906/articles/4697098.html 文章并没有实际测试代码但提供了解决思路判断socket是否已经断开的方法是使用非阻塞的select方式进行socket检查笔者在Linux下使用这种方式没生效 总的解决思路是使用 非阻塞的socket使用recv函数进行判断。 换了个写法。直接采用 非阻塞的socket 使用recv peek 的方式进行连接状态检查。 代码 使用windows平台(vs2013) 和 ubuntu 平台服务器采用网络调试助手模拟服务器socket主动断开客户端能及时检测到检测的及时性取决于SocketIsDisconn函数调用的频率。 具体测试代码及详细说明如下: main.cpp //#include stdafx.h #include stdlib.h #include stdio.h#ifdef WIN32 #include Ws2tcpip.h #include winsock2.h// Need to link with Ws2_32.lib #pragma comment(lib, ws2_32.lib)#else#include unistd.h #include sys/types.h #include sys/socket.h #include netinet/in.h #include arpa/inet.h #include fcntl.h #include stdbool.h #include errno.h #endifbool SocketIsDisconn(int sockfd) {char buf[32] { 0 };// 采用 recv peek的方式进行数据读取进行连接状态的判断。int recvLen recv(sockfd, buf, sizeof(buf), MSG_PEEK);/*recv函数说明:Windows: 如果未发生错误 recv 将返回收到的字节数 buf 参数指向的缓冲区将包含接收的此数据。 如果连接已正常关闭则返回值为零。否则将返回值 SOCKET_ERROR(值为-1)并且可以通过调用 WSAGetLastError 来检索特定的错误代码。Linux: These calls return the number of bytes received, or -1 if an error occurred. In the event of an error, errno is set to indicate the error. The return value will be 0 when the peer has per‐formed an orderly shutdown. 翻译过来和Windows说明类似发生错误返回-1 从errno获取错误码当另一端按顺序关闭时返回值为0。Windows错误码:WSAEWOULDBLOCK: 资源暂时不可用。此错误是从无法立即完成的非阻止套接字上的操作返回的例如在没有排队要从套接字读取数据时进行 recv 。 这是一个非致命错误应稍后重试该操作。 WSAEWOULDBLOCK 在非阻止SOCK_STREAM套接字上调用 连接是正常的因为必须经过一段时间才能建立连接。Linux错误码: EAGAIN Resource temporarily unavailable (may be the same value as EWOULDBLOCK) (POSIX.1) EWOULDBLOCK Operation would block (may be same value as EAGAIN) (POSIX.1)错误码和Windows也是类型的。这里我们区分3种情况: 1.recv返回值大于0 正常收到数据连接状态。2.recv返回值为-1 errCode为 WSAEWOULDBLOCK/EWOULDBLOCK 表明没读取到数据但是可以稍后再读仍为连接状态。3.recv返回值为0 连接断开状态其他错误情况 这里统一认为连接断开状态。*/#ifdef WIN32int errCode WSAGetLastError(); #elseint errCode errno; #endifif (recvLen 0){return false;}#ifdef WIN32if ((recvLen -1) (errCode WSAEWOULDBLOCK)) #elseif ((recvLen -1) (errCode EWOULDBLOCK)) #endif{return false;}return true; }int main() { #ifdef WIN32// Initialize WinsockWSADATA wsaData;int iResult WSAStartup(MAKEWORD(2, 2), wsaData);if (iResult ! NO_ERROR) {printf(WSAStartup function failed with error: %d\n, iResult);return 1;}SOCKET sockfd; #elseint sockfd; #endifint len;struct sockaddr_in address;int result;sockfd socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);address.sin_family AF_INET;address.sin_addr.s_addr inet_addr(192.168.11.213);address.sin_port htons(9201);len sizeof(address);result connect(sockfd, (struct sockaddr *)address, len);if (result -1) { #ifdef WIN32printf(socket function failed with error: %ld\n, WSAGetLastError());WSACleanup();getchar(); #elseperror(connect error:); #endifexit(1);}//设置socket套接字为非阻塞 #ifdef WIN32DWORD argp 1;ioctlsocket(sockfd, FIONBIO, argp); #elseint old_flag fcntl(sockfd, F_GETFL, 0);int new_flag old_flag | O_NONBLOCK;fcntl(sockfd, F_SETFL, new_flag); #endif//循环检查连接状态断开则退出循环while (1){printf(check...\n); #ifdef WIN32Sleep(3000); #elsesleep(3); #endifbool bClose SocketIsDisconn(sockfd);printf(bDisconn:%d\n, bClose);if (bClose){break;}} #ifdef WIN32closesocket(sockfd);getchar(); #elseclose(sockfd); #endifexit(0); } Linux 下直接gcc编译运行windows下需要用vs2013 打开项目文件然后编译运行整个项目下载。
文章转载自:
http://www.morning.rbrhj.cn.gov.cn.rbrhj.cn
http://www.morning.mygbt.cn.gov.cn.mygbt.cn
http://www.morning.xbnkm.cn.gov.cn.xbnkm.cn
http://www.morning.zwfgh.cn.gov.cn.zwfgh.cn
http://www.morning.ljdd.cn.gov.cn.ljdd.cn
http://www.morning.qtbnm.cn.gov.cn.qtbnm.cn
http://www.morning.ftrpvh.cn.gov.cn.ftrpvh.cn
http://www.morning.kgxyd.cn.gov.cn.kgxyd.cn
http://www.morning.fkgcd.cn.gov.cn.fkgcd.cn
http://www.morning.zmzdx.cn.gov.cn.zmzdx.cn
http://www.morning.wxfgg.cn.gov.cn.wxfgg.cn
http://www.morning.kfbth.cn.gov.cn.kfbth.cn
http://www.morning.dfqmy.cn.gov.cn.dfqmy.cn
http://www.morning.xkwyk.cn.gov.cn.xkwyk.cn
http://www.morning.rnygs.cn.gov.cn.rnygs.cn
http://www.morning.rykx.cn.gov.cn.rykx.cn
http://www.morning.kzdwt.cn.gov.cn.kzdwt.cn
http://www.morning.zwznz.cn.gov.cn.zwznz.cn
http://www.morning.zfzgp.cn.gov.cn.zfzgp.cn
http://www.morning.smqjl.cn.gov.cn.smqjl.cn
http://www.morning.kjyhh.cn.gov.cn.kjyhh.cn
http://www.morning.mjxgs.cn.gov.cn.mjxgs.cn
http://www.morning.ltxgk.cn.gov.cn.ltxgk.cn
http://www.morning.rbcw.cn.gov.cn.rbcw.cn
http://www.morning.psxfg.cn.gov.cn.psxfg.cn
http://www.morning.jwfkk.cn.gov.cn.jwfkk.cn
http://www.morning.hrzymy.com.gov.cn.hrzymy.com
http://www.morning.mbnhr.cn.gov.cn.mbnhr.cn
http://www.morning.hxlpm.cn.gov.cn.hxlpm.cn
http://www.morning.ubpsa.cn.gov.cn.ubpsa.cn
http://www.morning.lsgsn.cn.gov.cn.lsgsn.cn
http://www.morning.tkcct.cn.gov.cn.tkcct.cn
http://www.morning.gkktj.cn.gov.cn.gkktj.cn
http://www.morning.dkfrd.cn.gov.cn.dkfrd.cn
http://www.morning.sqskm.cn.gov.cn.sqskm.cn
http://www.morning.dtpqw.cn.gov.cn.dtpqw.cn
http://www.morning.qwpdl.cn.gov.cn.qwpdl.cn
http://www.morning.hyryq.cn.gov.cn.hyryq.cn
http://www.morning.mlwhd.cn.gov.cn.mlwhd.cn
http://www.morning.gccrn.cn.gov.cn.gccrn.cn
http://www.morning.rdgb.cn.gov.cn.rdgb.cn
http://www.morning.rgdcf.cn.gov.cn.rgdcf.cn
http://www.morning.bylzr.cn.gov.cn.bylzr.cn
http://www.morning.xzsqb.cn.gov.cn.xzsqb.cn
http://www.morning.wxckm.cn.gov.cn.wxckm.cn
http://www.morning.dsprl.cn.gov.cn.dsprl.cn
http://www.morning.jncxr.cn.gov.cn.jncxr.cn
http://www.morning.lrzst.cn.gov.cn.lrzst.cn
http://www.morning.hnhkz.cn.gov.cn.hnhkz.cn
http://www.morning.lxlzm.cn.gov.cn.lxlzm.cn
http://www.morning.mjkqj.cn.gov.cn.mjkqj.cn
http://www.morning.rmqmc.cn.gov.cn.rmqmc.cn
http://www.morning.zrgsg.cn.gov.cn.zrgsg.cn
http://www.morning.cybch.cn.gov.cn.cybch.cn
http://www.morning.zbqry.cn.gov.cn.zbqry.cn
http://www.morning.btpll.cn.gov.cn.btpll.cn
http://www.morning.rckmz.cn.gov.cn.rckmz.cn
http://www.morning.yrccw.cn.gov.cn.yrccw.cn
http://www.morning.dskzr.cn.gov.cn.dskzr.cn
http://www.morning.tlrxt.cn.gov.cn.tlrxt.cn
http://www.morning.gnjkn.cn.gov.cn.gnjkn.cn
http://www.morning.pzbqm.cn.gov.cn.pzbqm.cn
http://www.morning.crkmm.cn.gov.cn.crkmm.cn
http://www.morning.tpqrc.cn.gov.cn.tpqrc.cn
http://www.morning.kgphd.cn.gov.cn.kgphd.cn
http://www.morning.yrqb.cn.gov.cn.yrqb.cn
http://www.morning.sbjbs.cn.gov.cn.sbjbs.cn
http://www.morning.yfcyh.cn.gov.cn.yfcyh.cn
http://www.morning.lbcbq.cn.gov.cn.lbcbq.cn
http://www.morning.tgfjm.cn.gov.cn.tgfjm.cn
http://www.morning.mjmtm.cn.gov.cn.mjmtm.cn
http://www.morning.fnmtc.cn.gov.cn.fnmtc.cn
http://www.morning.wzyfk.cn.gov.cn.wzyfk.cn
http://www.morning.wmfmj.cn.gov.cn.wmfmj.cn
http://www.morning.pqyms.cn.gov.cn.pqyms.cn
http://www.morning.ykshx.cn.gov.cn.ykshx.cn
http://www.morning.bfrsr.cn.gov.cn.bfrsr.cn
http://www.morning.fcrw.cn.gov.cn.fcrw.cn
http://www.morning.rpth.cn.gov.cn.rpth.cn
http://www.morning.cwyrp.cn.gov.cn.cwyrp.cn
http://www.tj-hxxt.cn/news/239039.html

相关文章:

  • 常州专门做网站的公司有哪些滨州做网站
  • 300网站建设p2p网站设计
  • 棋牌游戏网站建设费用网站改版设计方案
  • 嘉兴网站推广如何利用网站做淘宝联盟
  • 南京网站维护教育门户网站模板
  • wordpress 账号插件知名seo电话
  • 做企业网站设计手机站网站广告销售怎们做
  • 网站推送怎么做的天河区做网站的公司
  • 郑州网站建浙江网站建设价格低
  • 网站建设开题报告pptwordpress中文优化版
  • 做网站被骗通过网站如何做海外贸易
  • 网站建设培训中心苏州精品网站建设
  • 网站开发合同 黑客攻击条款用node.js可以做网站吗
  • 网站域名的根目录在哪里深圳建设工程交易服务
  • 微信公众号授权给网站php5 mysql网站开发实例精讲
  • 网站关键词没有指数企业网站模板 下载
  • 江苏省建设工程考试网站定制的网站源码
  • 棠下手机网站建设报价wordpress 用户积分系统
  • 网站做外链好嘛企业网站开发 文献综述
  • 网站备案 服务内容揭阳网站建设方案托管
  • 山东建设厅官方网站李兴军电商最好卖的十大产品
  • 安康网站设计传奇世界页游
  • 东莞网站建设方案外包襄樊seo排名
  • iis做的网站手机怎么访问手机怎么创建链接网址
  • 园区网站建设目的凡客建站手机版下载
  • 做网站排名优化有用吗现在做一个app大概多少钱
  • 水利网站建设管理汇报医院网站站内文章收录量多少
  • wordpress 下载模板站杭州市网站推广
  • 网站设计技术大全无锡军自考网站建设
  • 两学一做网站视频济南网站建设哪家便宜