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

重庆百科网站推广wordpress分类数组

重庆百科网站推广,wordpress分类数组,最新舆情信息范文,怎样下载广安同城app最近使用自研的http client时发现一个问题,对端在发送响应数据之后立即调用close关闭了连接,我这没有调用到响应的回调,而是调用到了连接关闭的回调。对端延迟一会再关闭连接就没问题,用curl去访问也是正常的。经过排查是没有正确…

最近使用自研的http client时发现一个问题,对端在发送响应数据之后立即调用close关闭了连接,我这没有调用到响应的回调,而是调用到了连接关闭的回调。对端延迟一会再关闭连接就没问题,用curl去访问也是正常的。经过排查是没有正确处理对端关闭导致的。

根据gnu文档以及其他搜索结果,如果没通过SO_LINGER选项改变close的默认行为,调用close关闭socket时,会关闭两个方向的数据流。读方向上,内核会将套接字设置为不可读,任何读操作都会返回异常;写方向上,内核会尝试将发送缓冲区的数据发送,之后发送FIN包结束连接,这个过程中,往套接字写入数据都会返回异常;若对端还发送数据过来,会返回一个RST报文。

epoll触发EPOLLIN事件时,表示对应的连接上有数据可以读出。tcp连接的远端主动关闭连接,也相当于可读事件,因为需要处理发送来的FIN包。

有问题的接收代码如下,问题在于recv返回0时,没有处理已经收到的数据就直接关闭socket。

int tcp_event::handle_read()
{octets& read_buf = _ses->get_read_buf();int ret_bytes = 0;while(true){if(read_buf.full()){_ses->onrecv();}int bytes_cnt = recv(_fd, read_buf.end(), read_buf.free_space(), 0);if(bytes_cnt == 0){_ses->close(CLOSE_REASON_ONRECV);return -1;}else if(bytes_cnt != -1){ret_bytes += bytes_cnt;read_buf.resize(read_buf.size() + bytes_cnt);}else{if(errno == EAGAIN || errno == EWOULDBLOCK) break;if(errno == EINTR) continue;_ses->close(CLOSE_REASON_ONRESET);return -1;}}_ses->onrecv();return ret_bytes;
}
http://www.yayakq.cn/news/295800/

相关文章:

  • 做阿里还是网站沈阳网站建设找德泰诺
  • 网站建设搭建是什么意思php class 做网站
  • 做模型的网站旅游做网站
  • 佛山做网站建设价格网站管理包括哪些内容
  • 中国小康建设网官方网站视频制作软件有哪些
  • 个人网站 空间 多少够做网站送400电话
  • 有哪些网站建设工作室河源东莞网站建设
  • 创新创业教育课程网站建设方案北京市违法建设投诉网站
  • 珠海做网站设计服务好零食销售网站开发与设计
  • 移动端网站开发软件南宁网络推广品牌
  • 网站建设优化汕头能够做冶金工程毕业设计的网站
  • 网站建设wang.cd做室内3d设计的网站
  • 北川建设局网站网络营销推广的目的是什么
  • 网站建设合同违约做网站的的价位
  • 制作免费的网站新浪云平台创建wordpress
  • 唐山网站制作服务公司网站分为那几个模块
  • 花钱做的网站推广被骗网站开发所需资料
  • 用手机什么软件做网站做羞羞的事的网站
  • 天山网官网网站推广优化外包便宜
  • 英文网站常用字体物流网站平台建设
  • 教育培训网站建设ppt常德政务网站
  • 找做网站app电子商务交易平台
  • 哈尔滨网站制作建设多少钱it培训机构一般培训多久
  • 苏州知名高端网站建设xx市院门户网站建设方案
  • 给别人做网站怎么赚钱WordPress评论通知邮箱
  • 商业网站制作沈阳网站
  • 网站发布与推广怎么写phpcms 网站标题
  • 58网站自己做做网站的外包公司有哪些
  • 无锡网站建设 app东莞哪里可以学网络营销
  • 网站策划报告怎么写莆田网站建设电话