4

我想从 iOS 应用程序测试连接路由器(wifi 调制解调器)的速度。

我在这里找到了一些东西以编程方式获取链接速度?但找不到 sockios.h 和 ethtool.h

是否可以将此代码移植到 Objective-C 或有其他方法?

--

很抱歉丢失的信息和我糟糕的英语。

我想测试 ios 设备和连接的 wifi 调制解调器之间的链接速度(tx 速率)。

CWInterface 类中有一个名为 txRate 的属性。我想在 Cocoa Touch 中获取这些数据。

/*!
* @property
* @abstract Current transmit rate (Mbps) of the CoreWLAN interface. 
* @discussion Dynamically queries the interface for the current transmit rate.
*/
@property(readonly) NSNumber *txRate NS_DEPRECATED_MAC(10_6, 10_7);
4

3 回答 3

4

最后我找到了解决方案。

#include <ifaddrs.h>
#include <net/if.h>

+ (double)getRouterLinkSpeed
{
    BOOL   success;
    struct ifaddrs *addrs;
    const struct ifaddrs *cursor;
    const struct if_data *networkStatisc;

    double linkSpeed = 0;

    NSString *name = [[NSString alloc] init];

    success = getifaddrs(&addrs) == 0;
    if (success)
    {
        cursor = addrs;
        while (cursor != NULL)
        {
            name=[NSString stringWithFormat:@"%s",cursor->ifa_name];

            if (cursor->ifa_addr->sa_family == AF_LINK)
            {
                if ([name hasPrefix:@"en"])
                {
                    networkStatisc = (const struct if_data *) cursor->ifa_data;
                    linkSpeed = networkStatisc->ifi_baudrate;
                }
            }
            cursor = cursor->ifa_next;
        }
        freeifaddrs(addrs);
    }

    return linkSpeed;
}
于 2013-07-20T13:55:00.737 回答
2

您可以使用NSURLConnection它连接到您的测试服务器并下载大约 1 MB 的预设文件。使用 NSURLConnection 委托-connection:didReceiveData:-connectionDidFinishLoading:跟踪“到目前为止”的下载并从中计算下载速度。

于 2013-06-02T01:59:27.830 回答
0

目前没有官方(或 Apple 批准)的方式在 iOS 上获取 LinkSpeed。过去有环路孔不幸关闭。

您可以用来估计 LinkSpeed 的最相似的指标是通过在本地网络上发送 UDP 数据包并测量它们的发送速率来测量 wifi 速度。这称为 IP 数据包发送比特率,并在此 ITU 标准中定义https://www.itu.int/rec/T-REC-Y.1540/en

该 wifi 速度测量的 iOS 实现位于我们的 iOS SDK 中,您可以在此处找到:

https://github.com/speedchecker/speedchecker-sdk-ios

此实现是您可以在不实际在路由器本身上放置任何有效负载文件的情况下估计路由器 wifi 速度的最接近方法。

于 2020-11-13T13:29:52.787 回答