对于我的应用程序,我想向用户展示网络带宽。因此,用户会知道下载延迟。是否可以向他们展示?
我有一个问题,需要我计算可用的最大上传和下载,然后将我的程序的使用限制为它的一个百分比。但是,我想不出找到最大值的好方法。
目前,我能想出的唯一解决方案是在客户端和服务器之间传输几兆字节的数据,然后测量传输所需的时间。然而,这种解决方案是非常不可取的,因为对于 100,000 个客户端,它可能会导致我们服务器的带宽使用量增加太多(已经太高了)。
有没有人有解决这个问题的方法?
请注意,我最感兴趣的是在数据离开 ISP 网络之前传输数据的限制;我认为这很可能是导致其他程序通信降级的瓶颈发生的地方。不过,如果我错了,请纠正我。
编辑:经过进一步调查,我认为这是不可能的;在离开 ISP 网络时,要准确测量最大传输速率涉及的变量太多。不过,让问题保持开放,以防有人提出准确的解决方案。
我正在尝试测量 2 个模拟应用程序(用 C++ 编写)之间的 IO 数据传输率(带宽)。我创建了一个非常简单的 perfclient 和 perfserver 程序,只是为了在实际应用程序中实现这种计算方法之前验证我计算网络带宽的方法是否正确。因此,在这种情况下,我需要以编程方式执行此操作(不使用 Iperf)。
我尝试在各个域(本地主机、连接到以太网的计算机以及连接到无线连接的计算机)上运行我的 perfclient 和 perfserver 程序。然而,我总是得到这些不同主机上相似的带宽,大约 1900 Mbps(使用 1472 字节的数据大小进行测试)。这是一个合理的结果,还是我可以获得更好、更准确的带宽?
我应该使用1472(这是以太网MTU,不包括标头)作为每个send()和recv()的最大数据大小,为什么/为什么不呢?我还尝试使用不同的数据大小,这是我获得的平均带宽(使用以太网连接进行测试),这对我来说没有意义,因为数字超过了 1Gbps,达到了 28 Gbps 左右。
SIZE BANDWIDTH
1KB 1396 Mbps
2KB 2689 Mbps
4KB 5044 Mbps
8KB 9146 Mbps
16KB 16815 Mbps
32KB 22486 Mbps
64KB 28560 Mbps
Run Code Online (Sandbox Code Playgroud)
这是我当前的方法:
我做了一个基本的乒乓时尚循环,其中客户端不断向服务器程序发送数据流字节。服务器将读取这些数据,并将数据反映(发送)回客户端程序。然后客户端将读取这些反射数据(2 路传输)。上述操作重复1000次,然后我将时间除以1000以获得平均延迟时间。接下来,我将平均延迟时间除以 2,得到 1 路传输时间。带宽可以计算如下:
bandwidth = total bytes sent / average 1-way transmission time
Run Code Online (Sandbox Code Playgroud)
我的做法有什么问题吗?我怎样才能确保我的结果没有偏见?一旦我做到了这一点,我将需要在我的原始应用程序(不是这个简单的测试应用程序)中测试这种方法,并且我想将此性能测试结果放入科学论文中。
编辑: 我已经解决了这个问题。查看我在下面发布的答案。
我正在使用游戏1.2.4.我提供下载图像的链接.许多客户可能试图同时下载相同的图像.我想知道,如何确定可以下载图像文件的同时客户端'n'的数量(200-300 KB).各种因素是什么?
假设我知道我收到't'请求,但我知道我可以处理'n'请求文件大小'',我会立即将二进制映像渲染到'n'个客户端.剩下的"tn"客户端我会发送一个"间隔时间"作为在间隔时间之后发送请求的响应.
这有可能吗?
java client-server bandwidth playframework playframework-1.x
在我的职业生涯中已经完成了多个网站,我对不同网站的带宽利用率很熟悉。但是,由于大多数站点都托管在无限制的程序包中(这意味着该程序在其他程序之间共享)或每月1-2GB的带宽,因此目前尚无任何站点加载速度缓慢的报道。
我的问题是,计算每天估计有2000位访问者的典型网站(例如,假设您托管默认的Joomla页面)所需的带宽的最佳方法是什么?仅将2000除以页面大小就足够了吗?还是还有更多呢?
在推送通知机制中,例如 Apple 的推送通知服务,它们使用持久的 IP 连接。
我的问题是,使用持久连接如何节省设备的电池和带宽?我的印象是,由于连接是持久的,因此设备始终使用 WiFi 或 3G/LTE 无线电。
我知道,通过持久连接,您不会因为在没有更改时不向服务器请求更改而浪费带宽,而是服务器会将这些更改“推送”给您。但是,我不知道这如何节省电池和带宽(因为您与服务器有始终在线的连接)。
类似的问题可以在这里找到:
Android C2DM 如何提高带宽使用率?
但我认为答案还不够。
battery push bandwidth push-notification persistent-connection
根据带宽的定义,它是频谱的宽度。因此带宽应以 Hz 为单位进行测量。但 bps、Mbps、kbps 几乎到处都被用作带宽的度量。我需要知道的是,为什么使用 bps、kbps 等数据传输速率测量来测量信号的带宽。
我正在尝试实施带宽测试,看起来最常规的方法是在客户端和服务器之间来回传输一个或多个图像,看看上传和下载时间是多少.事实上,这个答案已经涵盖了获取下载时间的想法.
但是,在这一点上,我不太确定如何使用或不使用其他答案来使流程双向进行.即使在添加调试语句之后,我还没有找到图片数据存储在其他答案代码中的位置.如果我尝试从一个干净的平板开始,我在Internet/Stack Overflow上发现的很多关于来回发送图像的API信息几乎没有解释或详细说明,所以我无法使用它把两者放在一起.此外,我将有时涉及其他平台的一些实验放在一起似乎真正限制了带宽使用,以及根据图像的大小不正确地缩放延迟.
使用JavaScript,您如何在客户端和服务器之间来回传输相同的图像,以便您可以准确地使用延迟和图像的大小来测量带宽?如何使用相同的图像,无需限制,并且没有用户的交互,这两种方式都可以工作?
编辑
我可以尝试发布我尝试过的东西,但它很难有意义.其中很多都是在Flash中.当我开始使用JavaScript时,我开始尝试这些方面:
$.get('http://ip address/test.php?filename=XXX&data=LONG STRING OF DATA REPRESTING THE DATA TO BE SAVED PROBABLY LESS THAN 2K IN SIZE AND ALSO YOU SHOULD ESCAPE OR ATLEAST URIENCODE IT', function(data) {
alert('here')
eval(data);
});
Run Code Online (Sandbox Code Playgroud)
PHP文件是:
<?php
echo "response=here";
?>
Run Code Online (Sandbox Code Playgroud)
我将PHP文件用于Flash和JavaScript.我还使用Adobe Media Server和Flash.但是在使用Flash/PHP时,从1MB文件到32MB文件,Flash只会将延迟缩放10倍,远不及32.它似乎也至少在与AMS配对时限制带宽使用,甚至可能与PHP文件配对.
我准备转换JavaScript代码以将实际图像传递到PHP文件...但我无法达到它.即使我做的事情如下:
for (var s in download) {
alert(s + ": " + download[s]);
}
Run Code Online (Sandbox Code Playgroud)
download作为在JavaScript中下载图像的对象(参见代码的链接答案),我没有看到任何有用的东西. download.children.length是0等等.我也不愿意相信结果不会限制带宽使用,就像Flash实验那样,没有进一步的确认; 也许图像必须使用一种类型的API调用或其他类型来传递,以使其真正正常工作?
从本质上讲,我真的在寻找好的API信息.我看到的其他东西并不精确,无法连接点.
2ND编辑
我遇到的一个陷阱是使用POST来下载图像.我在使IIS 7允许POST下载具有 "异常"二进制字符的任意文件类型(即jpgs)并允许它们大小超过2MB 时遇到了很多困难.
作为一个项目,我必须计算 python 中某个频率向量的信号的带宽。在 MATLAB 中,可以使用p = bandpower(pxx,f,'psd')其中pxx是功率谱密度向量f, 是与 pxx 中的 PSD 估计值相对应的频率向量。python中是否有任何等效的函数可以做同样的事情?
在android中似乎没有用于管理WIFI热点的公共API。
有一些带有反射和其他的解决方案,但似乎没有一个答案
如何配置 5Ghz WiFi 热点?
我想在两个支持 5GHz 频段的 Android 设备之间使用 5GHz 本地热点网络实现更快的文件传输。
像 ShareIt 这样的 3rd 方应用程序可以在“超快速模式”下启用 5GHz 热点