套接字在连接不稳定的情况下如何表现

How socket behave in presence of connection instabilities

想象一下客户端和服务器之间建立的连接。如果其中一个参与者短时间失去了与网络的连接,socket 是否仍然有效?大多数情况下,我对 LWIP 实现很感兴趣,但有些东西告诉我答案对任何套接字都是一样的。

顺便问一下,当需要非常快速的断线检测但时间很短时,将 KEEP_ALIVE 参数更改为秒级是不是很酷的主意?

"connection lost" 我指的是物理原因,例如与 wifi 网络的连接断开。

If one of the participants has lost connection with the network for a short time, will socket still be valid?

视情况而定。假设您指的是 TCP 套接字:如果在这段时间内没有数据必须交换,那么短暂的连接丢失根本无关紧要。相反,如果必须交换数据或 TCP keep alive 处于活动状态,则连接可能会降级(在应用程序数据尚未得到确认的情况下减慢并重试发送数据)或因错误而关闭,具体取决于物理连接丢失发生的时间长短.

在 UDP 或原始套接字的情况下,它无论如何都不关心丢失的数据,因此不会发生任何重要的事情。