我在下载开始时有可用的内容长度。所以我知道我需要请求多少字节。我以 1024 字节的块下载。在最后一个块中,我请求剩余的字节数。我正在使用读取功能。但是最后一块需要很长时间才能到达。正常吗?
问问题
461 次
3 回答
3
也许您的最后一个块不够大,无法刷新缓冲区。
您可以检查如何刷新 fd 并在发送最后一个块后手动执行。
于 2009-09-21T13:17:15.083 回答
2
不。我的猜测是服务器缺少对的调用,flush()
因此输出挂在某个缓冲区中,直到超时(然后,服务器将刷新)。
于 2009-09-21T13:18:06.057 回答
0
谢谢我发现了问题。我的代码使用应用程序级缓冲区,因此最后一个块需要很长时间才能下载。我一直在使用 Bryant 书中给出的强大的 io 函数。一段时间前我研究过该代码并忘记了它。我修改了代码,发现代码正在使用缓冲。
我犯的另一个错误是使用 HTTP/1.1。HTTP 1.0 导致服务器在传输数据后关闭连接。这样就解决了问题。
于 2009-09-21T16:29:20.667 回答