gpt4 book ai didi

java - 简单的上传速度测试

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:50:20 33 4
gpt4 key购买 nike

我创建了简单的上传速度测试,见下面的代码:

try {
HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
byte [] array = new byte [1 * 1024 * 1024]; // 1 Mb data test
MultipartEntity multipartEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
multipartEntity.addPart("", new ByteArrayBody(array, MIME.ENC_BINARY, ""));
conn.addRequestProperty(multipartEntity.getContentType().getName(), multipartEntity.getContentType().getValue());

conn.setReadTimeout(connTimeout);
conn.setConnectTimeout(connTimeout);
conn.setDoOutput(true);
conn.setRequestMethod("POST");

long start = System.currentTimeMillis();
DataOutputStream dataStream = new DataOutputStream(conn.getOutputStream());
dataStream.write(array);

String CRLF = "\r\n"; // Line separator required by multipart/form-data.
String boundary = multipartEntity.getContentType().getValue().replaceAll(".*boundary=", "");
dataStream.writeBytes("--" + boundary + CRLF);

dataStream.flush();
dataStream.close();

int responseCode = conn.getResponseCode();
long end = System.currentTimeMillis();

if (responseCode == HttpURLConnection.HTTP_OK) {
long speed = Math.round(array.length/ (end-start));
} else {
// something went wrong
}

一切正常,但我有一个小问题。在像 wifi 这样的快速网络上,发送 1 Mb 的数据不到一秒钟。但在较慢的网络上,可能需要 10-30 秒,具体取决于网络和信号。所以我意识到,最好不要上传固定长度的数据,而是使用时间限制之类的东西 - 所以上传数据不要超过例如 3 秒。

问题很简单:)如何实现这个 - 我的意思是发送数据,同时计算时间,当限制到期时停止发送,看看我发送了多少和计算速度?

最佳答案

如何使用二分搜索之类的方法,这样您就可以从少量数据开始,然后将大小不断加倍,直到生成的时间足够长以合理了解带宽。

关于java - 简单的上传速度测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19903396/

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