使用TCP / IP套接字检查已将多少数据传送到目标

时间:2013-02-26 15:11:42

标签: c sockets tcp

我正在开发一个需要向客户端发送大量数据的服务器应用程序。但是,客户端可以随时断开连接,并且套接字上的send()/ write()将在这种情况下返回错误。我想检查在客户端断开连接之前实际交付了多少数据,以便能够在客户端重新连接时从中断的位置继续发送数据。

是否可以使用套接字API检查它?

1 个答案:

答案 0 :(得分:6)

不,套接字API不会提供此信息。事实上,通常不可能知道这一点。根据连接失败的特定方式,一侧的TCP堆栈通常无法知道成功将数据传输到另一侧的数据量。它唯一可以知道的是确认了多少数据,这不是一回事。考虑到除TCP / IP之外的其他事情可能已经失败(本地操作系统,远程操作系统,远程进程,远程应用程序逻辑),在TCP级别确认的数据量可能并不意味着什么

您需要使用端到端应用程序协议让远程端确认已收到并成功处理的数据(并提交,如果适用)。