检查使用TCP/IP套接字传递到目的地的数据量。

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

6
不,套接字API无法提供此信息。实际上,通常无法知道这一点。根据连接失败的具体方式,一侧的TCP堆栈通常无法知道成功传输到另一侧的数据量。它唯一能知道的是已确认的数据量,这不是同一件事。考虑到除TCP/IP之外的其他东西可能会失败(本地操作系统、远程操作系统、远程进程、远程应用程序逻辑),在TCP级别上已确认的数据量可能并没有太大意义。
您需要使用端到端应用程序协议,以使远程端确认其已接收和成功处理的数据(如果适用,则提交)。

我担心会出现这种情况。非常感谢您的回答! - Michal Pietras

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接