3

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

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

4

1 回答 1

6

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

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

于 2013-02-26T15:21:51.650 回答