【发布时间】:2017-05-05 16:16:30
【问题描述】:
我正在看一本书,里面有以下段落:
默认情况下,套接字没有超时。这可能很糟糕,因为如果 网络或远程主机出现故障,连接处于空闲状态 无限期地。但是,您可以使用在套接字上定义超时 它的 setTimeout() 方法。这个版本的 setTimeout() 需要一个 以毫秒为单位的超时作为它的第一个参数。如果套接字空闲 在这段时间内,会发出一个超时事件。
这是我从网上阅读得到的:
连接超时仅在启动 TCP 连接时发生。 如果远程机器没有应答,通常会发生这种情况。这意味着 服务器已关闭,您使用了错误的 IP/DNS 名称或 与服务器的网络连接已断开。
socket timeout专门用来监控连续传入的数据 流动。如果数据流在指定的超时时间内中断,则 连接被视为停止/断开。 这是等待单个数据包时的超时。 一个常见的误解是套接字超时是 收到完整的回复。因此,如果您的套接字超时为 1 第二个,一个由 3 个 IP 数据包组成的响应,其中每个响应 数据包需要 0.9 秒才能到达,总响应时间为 2.7 秒,则不会有超时。
所以假设Node.js 中net.Socket 上使用的net.connect.setTimeout 实际上是套接字超时 是正确的吗?
【问题讨论】:
标签: javascript node.js sockets tcp