Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在开发一个需要向客户端发送大量数据的服务器应用程序。但是,客户端可以随时断开连接,并且在这种情况下,套接字上的 send()/write() 将返回错误。我想检查在客户端断开连接之前实际传递了多少数据,以便能够在客户端重新连接时从中断的地方继续发送数据。
是否可以使用套接字 API 进行检查?
不,套接字 API 不会为您提供此信息。事实上,一般情况下不可能知道这一点。根据连接失败的特定方式,一侧的 TCP 堆栈通常无法知道有多少数据成功到达另一侧。它唯一能知道的是确认了多少数据,这不是一回事。并且考虑到 TCP/IP 以外的其他事情可能已经失败(本地操作系统、远程操作系统、远程进程、远程应用程序逻辑),在 TCP 级别已确认的数据量可能并不意味着什么.
您需要使用端到端应用程序协议让远程端确认它已接收并成功处理(并提交,如果适用)的数据。