我正在开发一个网络支持框架(最初用于 Android),其中包括三个基本服务:主机发现、网络通信和QoS Monitor。
对于最后一项服务,我正在尝试实现一种方法,该方法返回单个主机可以定期发送到另一台主机的最大每秒消息数 (MPS) 。
根据要发送的对象的大小和网络速度,我可以很容易地粗略估计出可以通过网络发送的理想MPS 。当我尝试将信号强度 (SS)包含在等式中时,就会出现问题。
protected int getMPS(NetworkApplicationData message, Context context) {
int messageSizeBits = MemoryUtils.sizeOf(message) * 8;
int networkSpeedMbps = getNetworkSpeed(context);
float signalStrength = getNetworkSignalStrength(context);
// FIXME: what about signalStrength?
return networkSpeedMbps * 1024 * 1024 / messageSizeBits;
}
所以这里的基本问题是:是否有任何关于信号强度对无线网络速度影响的预先确定的研究?
做一些测试,我注意到根据信号强度,建立的网络速度会发生变化。例如,对于“标准化”的 100%SS,Android API 返回 54Mbps 的网络速度值;对于 40%SS,API 返回 7Mbps 网络速度值。我应该只依赖 Android API 返回的网络速度值吗?在这种情况下,我大多会得到一个高估的 MPS。
无论如何,我需要知道哪种方法是解决这个问题的正确方法,并将计算建立在正式研究的基础上。