虚标的WIFI连接速度

问题的来源

在我的上一篇文章中,遇到了一个在局域网下跑不满带宽的问题。我在电脑上部署了一个服务下载服务器,讲道理在局域网下,我用手机下载文件,应该能跑满整个局域网的带宽的。但事实并非如此,下载的带宽只能跑到WIFI连接速度一半都没有。

环境

电脑 2.5G网卡手机WIFI7协议

各个方面排查问题

代码方面

由于文件下载服务器需要实现Range Request这个规范(文件指定具体范围内内容响应),所以我使用的是RandomAccessFile进行文件指定字节的下载。

一开始,我怀疑就是因为这个文件读取的速度太慢,拉低了传输速率。于是,我换成了FileInputStreamFileChannel,读取文件时直接利用FileChannelmap方法,直接将整个文件映射到内存中,免得读取文件速度慢。

FileInputStream fileInputStream = new FileInputStream(file);
FileChannel channel = fileInputStream.getChannel();
// 将文件指定范围的数据映射到内存中
MappedByteBuffer mappedByteBuffer = channel.map(FileChannel.MapMode.READ_ONLY, rangeHeader.getStart(), rangeHeader.getEnd());
// 读取数据
byte[] bytes = new byte[1024];
mappedByteBuffer.get(bytes);

修改完代码后,手机下载速度还是没有提升,所以不是代码原因导致下载速度慢的。

网络方面

既然不是代码问题引起的,那就得转换思路。不是软件问题,那就只能是硬件问题了。哪么有啥硬件会出现问题呢?我家局域网是用WIFI来构建的,但是呢,我前两周才换小米BE5000路由器,应该不会有啥问题吧。

于是乎,我在电脑上部署了测速服务器,用于测试局域网中手机的最高速度是多少。

测速软件-OpenSpeedTest

github地址:https://github.com/openspeedtest/Speed-Test

本机部署后,测速一看,最高速度也就1500Mbps,跟下载速度上限一致。

原来是手机WIFI的连接速度和实际连接速度不符导致的问题。为什么声明的连接速度和实际的连接速度相差那么多呢?经过我DeepSeek后,得知手机上显示的连接速度是协商速率,并非实际连接速度。实际连接速度受到多种因素的影响(手机支持的WIFI协议、离路由器的距离、信道干扰等),能达到协商速率的一半就比较理想了。

总结

至此,已经定位到了为啥在局域网下跑不满带宽的原因了,是因为WIFI的协商速率并非真正意义上能达到最快速度,而是一个理想速度。那这个咱也没啥办法了😥,在手机USB协议还是2.1的情况下,WIFI已经是能达到的最快速度了,并且这个WIFI速度比起USB的速度快了很多了,足够了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值