【发布时间】:2020-06-17 16:28:24
【问题描述】:
我正在从事一个涉及使用套接字进行 TCP 通信的遗留 VB6 项目。
应用程序需要长寿命的套接字连接,但我怀疑它在多大程度上是可能的。 应用程序在 Windows 操作系统中运行。 如果在建立套接字连接并且定期交换一些数据后,比如 30 秒, 连接会永远存在吗?操作系统或 TCP 堆栈或网络提供商是否有任何限制?
【问题讨论】:
-
"需要长寿命的套接字",不,这总是一个坏主意,因为 TCP 套接字需要在路径上的不同位置分配资源。因此,公平地说,您不应该长时间使用连接。不要克服任何超时...如果您使用虚拟数据包来使连接处于活动状态,那么重新连接可能会对您起到完全相同的作用,不是吗?
-
亲爱的@ Jean-Baptiste Yunès,我们的应用程序侦听来自已连接网络调制解调器的嵌入式设备的连接。应用程序需要按计划的时间间隔从设备获取数据。如果我们在会话结束后关闭连接,我们需要在下一个时间间隔等待来自设备的连接请求。
-
只要您能够应对断开连接(接受来自同一设备的新连接并恢复您正在做的事情),您应该没问题。只需将连续连接视为一种优化。但是您不能假设连接必须保持正常。如果你每 30 秒左右才获得一次数据,你并没有真正获得太多。 TCP 协议不会中断您的连接,但干预网络设备可能会。