TCP插座需要何时需要保持贴生
When is Keep-alive required for TCP Sockets?
据我所知,据我所知,在TCP套接字上的距离很有帮助,有助于知道插座是否不仅打开,并且在两个插座之间实际上还活着连接。因此,我想询问有关在Winsockss中使用Keepalive的几个问题:
-
当保持距离选项检测到死插座时会发生什么?
-
我如何检查连接是否活着还是死亡,而无需实际使用发送和RECV?如果我必须使用发送和RECV函数,则首先使用饲养的意义是什么?
当保持现象选项检测到死窝时会发生什么?
连接是重置的,任何读取或写入都会获得"连接重置"错误。请注意,默认情况下关闭了keepalive,并且启用时仅以两个小时的间隔运行时。
我如何在不使用Send and RecV的情况下检查连接是否活着还是死亡?
你不能。TCP/IP故意设计为"拨号音"。这样可以更好地工作。这是为什么它取代所有先前协议(例如SNA)的主要原因。
如果我必须使用send and recv函数,那么首先使用keep-alive有什么意义?
recv()
不会告诉您有关断开的连接。它可能永远阻止。您可以使用阅读超时,但是您必须决定多少时间太多了。或者,您可以实现应用程序级ping。
保持活着检测是否在连接的另一端(或网络诸如网络之类的物理链接)在发送消息之前已经死亡。否则,仅在您实际尝试发送数据时才能检测到断开连接,如果您的连接出于某种原因可能需要很长时间。
相关文章:
- 何时在引用或唯一指针上使用移动语义
- cmake在我的项目中所需的所有静态库都不成功
- 何时提供默认参数作为模板参数
- C++-明确何时以及如何调用析构函数
- 当我尝试使用 sstream 和分面将 Boost Time_duration转换为字符串时,我没有得到所需的格式
- 在以唯一ptr为值的C++映射中,动态内存何时会被销毁
- 何时应通过引用传递矢量参数而不是按值传递矢量参数?
- 按需渲染帧
- 函数如何使用引用返回所需的数字?
- 如果非动态变量被指针引用,何时超出范围?
- 类作用域的类型别名"using":[何时]方法中的用法可以先于类型别名?
- 从另一个静态常量数组初始化静态常量数组(只需少量计算)
- 为什么 std::lerp 不适用于任何已实现所需操作的类型?
- 何时定义QT_NO_CONTEXTMENU?
- 何时为派生类初始化 vptr?
- 如何知道何时调用删除以及何时调用 delete[] C++?
- 指针的 C++ 动态数组 - 何时需要使用它?
- 我应该在 C++ 中何时/为什么使用 STATIC?
- 确定将弧转换为线段所需的点数
- TCP插座需要何时需要保持贴生