gpt4 book ai didi

java - HttpUrlConnection.setChunkedStreamingMode 的效果

转载 作者:搜寻专家 更新时间:2023-10-31 20:17:20 24 4
gpt4 key购买 nike

我对HttpUrlConnection.setChunkedStreamingMode没有很好的理解,这个模式有什么作用?

我有以下示例代码:

HttpURLConnection conn = getHttpURLConnection(_url);
conn.setChunkedStreamingMode(4096); //4k
conn.setConnectTimeout(3000);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestMethod("POST");
OutputStream out = conn.getOutputStream();
byte[] buffer = new byte[1024 * 10];//10k
FileInputStream in= new FileInputStream(file); //Write the content of the file to the server
int len;
while ((len = in.read(buffer)) != -1) {
out.write(buffer, 0, len);
}

out.flush();
in.close();

比如,文件大小是 101k,我将 block 大小设置为 4096。

  1. HttpUrlConnection 每次写入都会向服务器发送 4096 个字节?最后一次 1k?

  2. 请注意,我使用了 10k 的缓冲区来写入输出流, block 大小和缓冲区大小不一样有关系吗?

  3. 如果我在我的代码中禁用 ChunkedStreamMode,与我设置 4096 的代码相比有什么效果?

最佳答案

  1. The HttpUrlConnection will send 4096 bytes to the server every write? and 1k for the last time?

是的。

  1. Note that I have used a 10k buffer to write to the outputstream, Does it matter that the chunk size and buffer size are not the same?

没有。

  1. If I disable the ChunkedStreamMode in my code, what's the effect compared to the code that I have set 4096?

效果是整个输出都被缓冲,直到你关闭,这样Content-length header就可以先被设置和发送,这增加了很多延迟和内存。在大文件的情况下不推荐。

关于java - HttpUrlConnection.setChunkedStreamingMode 的效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46249401/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com