zoukankan      html  css  js  c++  java
  • 服务器判断http是否中断

    一般来说,只需要send或者recv一下,如果结果为零,则为掉线。
    1.当recv返回值为0是表示对方已经正常(MSDN说是完美的)的断开连接.
    2.当recv返回SOCKET_ERROR时,说明对方已经断开连接,但是可能是非正常断开(断网或者客户端进程结束).
    如果你担心在读的时候被阻塞,使用select(这个不太懂)
    但是,在长连接下,有可能很长一段时间都没有数据往来。此时则需要心跳机制,TCP本身自带了心跳机制。
    如果你设置了心跳,那TCP就会在一定的时间(比如你设置的是3秒钟)内发送你设置的次数的心跳(比如说2次),并且此信息不会影响你自己定义的协议。所谓“心跳”就是定时发送一个自定义的结构体(心跳包或心跳帧),让对方知道自己“在线”。 以确保链接的有效性。
    所谓的心跳包就是客户端定时发送简单的信息给服务器端告诉它我还在而已。
    总的来说,心跳包主要也就是用于长连接的保活和断线处理。一般的应用下,判定时间在30-40秒比较不错。如果实在要求高,那就在6-9秒。
  • 相关阅读:
    Key and Certificate Conversion
    openssl
    python http通信实现
    鼠标右键添加cmd
    好文章
    wireshark里无网络接口解决办法
    python垃圾回收
    终于有人把 Docker 讲清楚了
    mongodb的监控与性能优化
    mongodb创建超级用户和普通用户(对应数据库的用户)
  • 原文地址:https://www.cnblogs.com/yzjT-mac/p/5936781.html
Copyright © 2011-2022 走看看