如何使套接字保持活动状态

时间:2011-06-22 07:07:06

标签: visual-c++ network-programming tcp

我们正在努力在Filezilla Client和Filezilla Server之间进行通信,它们之间有两个代理。在两个代理之间,我们有2个tcp连接。

filezilla客户端 - > P1 - 2 ----- P2 - > filezilla服务器。

我们遇到的问题是上传filezilla客户端将整个数据发送到P1,P1将数据发送到P2。但是P2 recv。速度不如P1发送速度快。 P1会在一段时间后关闭连接,但是当P2仍在尝试从P1恢复数据时,它将无法恢复,它将失败。

有没有办法保持soket活着,直到另一端完全恢复数据?

  1. 我尝试过使用具有不同超时选项的Linger。但它没有处理所有情况。

  2. 我已尝试设置套接字选项keepalive,但仍然存在同样的问题。

  3. 有人可以帮忙或建议我吗?

2 个答案:

答案 0 :(得分:1)

当P2收到从另一端关闭连接的信息时,它应该从套接字中读取剩余的字节,然后再从其末尾关闭连接。

答案 1 :(得分:0)

感谢您对此主题的贡献,使用SHUTDOWN函数解决了问题....

此致 尼迪