硬件断开后TCP恢复连接

时间:2012-05-04 14:42:27

标签: sockets tcp broken-pipe connection-reset

我有一个连续写入TCP套接字的程序。我想确保如果客户端和服务器之间的连接断开任何时间,可以重新建立连接。

现在,我可以断开连接,并且当write()函数循环时,它返回一个“由对等重置连接”错误,然后返回ULLONG_MAX的值。然后,一旦我重新插入电线,write()会不断返回“断管”错误。我试图关闭并重新打开连接,但我继续得到“通过对等重置连接”错误。

有没有人知道如何重新建立连接或者让它在一定时间内(或无限期地)保持活着?

2 个答案:

答案 0 :(得分:4)

您无法在此处重复使用文件描述符,您必须从头开始 - 创建新的socket(2)并在其上调用connect(2)

答案 1 :(得分:1)

我担心你必须建立一个新的连接,而这只能由客户端程序启动。您可能需要某种方法来确保它是相同的客户端重新连接可能检查IP或在第一次连接时交换令牌,因此您可以在连接上进行一些不同类型的启动以进行第一次连接和恢复。该解决方案需要在您的帐户上进行一些编程,但是..

如果TCP由于某种原因不是唯一的选择,您可能需要考虑UDP通信,因为决定何时连接丢失的部分留给您。但是你需要处理很多其他想法(但是因为你的目标是丢失和恢复通信,这可能更符合你的需求)。