【发布时间】:2015-06-03 21:03:37
【问题描述】:
下载文件时,我知道已经下载了多少数据,因此我可以显示下载进度。
但是,在上传文件时,我真的不知道另一端收到了多少数据,所以我无法显示上传进度,所以我认为只有这样才能知道有多少数据已上传是通过让接收方在每次接收到一些数据时向我发送回接收到的数据量。
这是正确的还是有其他方法?
【问题讨论】:
-
只需跟踪您发送的内容。如果绝对必要,减少套接字发送缓冲区。但是跟踪您发送/排队的内容可能就足够了。
-
@David Schwartz 所以我应该假设上传的数据量与发送到套接字发送缓冲区的数据量相同?但这只会给我大概的结果,而不是 100% 准确的结果(尽管如果套接字发送缓冲区只有几千字节,这不会成为问题)。
-
@user4582812:正确。对于上传,您所能得到的只是一个近似值。出站数据在内核中排队,只有当队列已满时,您的代码才会在该队列中阻塞。队列在后台传输。因此,您所能做的就是报告您“发送”了多少数据的进度。了解对方是否实际收到数据的唯一方法是对方是否在之后向您发送确认。
标签: c sockets winapi network-programming winsock