【问题标题】:Socket re-write after failed失败后重新写入套接字
【发布时间】:2011-10-05 20:21:52
【问题描述】:

这里是环境:

client -> router -> server

即使连接断开,客户端也会继续向服务器写入数据。

步骤如下:

  1. 路由器有问题,客户端会收到错误信息。

  2. 路由器已恢复

客户端可以像以前一样将数据写入服务器。

PS:这是一个 TCP 连接。

【问题讨论】:

  • 我不认为没有黑客可以做到这一点。即使它有效,服务器也可能会拒绝连接关闭后发送的任何数据。

标签: c windows linux tcp


【解决方案1】:

TCP 旨在容忍临时故障。 TCP 内置的缓冲、排序、确认、超时和重传机制将处理一些丢弃数据包。连接的 TCP 流的末端只会在路由恢复时看到延迟。客户端可能会溢出其套接字发送缓冲区并从发送调用返回错误,这取决于您如何处理(等待、重试、保释)。

如果您的路由器真的是NAT 防火墙,这将不起作用,而消费级“路由器”通常是。

如果服务器软件决定在一段时间不活动后关闭您的连接,这也不起作用。

我建议多花点时间了解TCP/IP,也许买一个book :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 2014-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多