首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TCP:通过中断连接提高可靠性

TCP:通过中断连接提高可靠性
EN

Stack Overflow用户
提问于 2017-08-07 08:32:09
回答 1查看 223关注 0票数 1

我正在开发一个应用程序,在这个应用程序中,我需要确保即使网络崩溃,消息仍将可靠地、有序地、不受修改地到达目的地。我一直在使用TCP,直到现在,我还在使用以下策略:

  • 如果发送/接收失败,请再次执行,直到没有错误。
  • 如果远程断开连接,请等到下一个连接,然后用这个新的连接替换我发送/接收的套接字(通过一些线程和阻塞来确保交换干净)。

我最近意识到,这是行不通的,因为send不能报告错误,表明遥控器没有收到消息(例如引用)。这里)。

我还了解到TCP连接可以在短暂的网络中断中存活下来,因为内核会缓冲数据包,直到连接在超时后被宣布死亡为止(引号)。这里)。

问题是:在客户机/服务器端(使用setsockoptSO_KEEPALIVE选项)将超时时间调整得更高,从而使连接“永不超时”是否是一种可行的策略?我必须处理与内核的缓冲区填充相关的错误,但这应该比较简单。

还有其他的故障案例吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-07 08:41:42

如果两端没有显式断开连接,即使拔掉电缆,tcp连接也将永远保持打开状态。TCP中没有超时。

然而,我会使用(或设计) tcp之上的应用协议,使重新连接后恢复数据传输成为可能。例如,您可以使用HTTP

这将是更稳定的,因为依赖于缓冲区,就像你说的,在某个时候耗尽缓冲区,但是缓冲区也会丢失,比如说停电。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45542546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档