4

接続しているルーター(wifiモデム)の速度をiOSアプリからテストしたいです。

ここで何かを見つけましたプログラムでリンク速度を取得しますか? sockios.h と ethtool.h が見つかりませんでした

このコードを Objective-C に移植することは可能ですか、それとも別の方法がありますか?

--

不足している情報と私の下手な英語で申し訳ありません。

iOS デバイスと接続された Wi-Fi モデム間のリンク速度 (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 に答える