如何获得网络速度,在xamarin iOS中是快速还是慢速?

问题描述 投票:1回答:1

如何获得网络速度,无论在xamarin iOS中是快速还是慢速?我使用了NetworkReachability,但是它给出的结果是URL是否可达?我想获得网络速度,快还是差?`private static NetworkReachability _defaultRouteReachability;

    public static event EventHandler ReachabilityChanged;

    public static bool IsNetworkAvailable(string url)
    {
        if (_defaultRouteReachability == null)
        {
            _defaultRouteReachability = new NetworkReachability(url);
            _defaultRouteReachability.SetNotification(OnChange);
            _defaultRouteReachability.Schedule(CFRunLoop.Current, CFRunLoop.ModeDefault);
        }

        NetworkReachabilityFlags flags;

        return _defaultRouteReachability.TryGetFlags(out flags) &&
            IsReachableWithoutRequiringConnection(flags);
    }

    private static bool IsReachableWithoutRequiringConnection(NetworkReachabilityFlags flags)
    {
        // Is it reachable with the current network configuration?
        bool isReachable = (flags & NetworkReachabilityFlags.Reachable) != 0;

        // Do we need a connection to reach it?
        bool noConnectionRequired = (flags & NetworkReachabilityFlags.ConnectionRequired) == 0;

        // Since the network stack will automatically try to get the WAN up,
        // probe that
        if ((flags & NetworkReachabilityFlags.IsWWAN) != 0)
            noConnectionRequired = true;

        return isReachable && noConnectionRequired;
    }

    private static void OnChange(NetworkReachabilityFlags flags)
    {
        var h = ReachabilityChanged;
        if (h != null)
            h(null, EventArgs.Empty);
    }`
xamarin xamarin.forms xamarin.ios
1个回答
1
投票

类似的东西可以为您提供帮助,除非您想使用图书馆。这基本上为您提供了互联网速度的技术定义,但是实际数字会更大一些。它与@Martheen建议的解决方案非常相似

public async Task<string> CheckInternetSpeed()
{
    //DateTime Variable To Store Download Start Time.
    DateTime dt1 = DateTime.Now;
    string internetSpeed;
    try
    {
        // Create Object Of WebClient
        var client = new HttpClient();
        //Number Of Bytes Downloaded Are Stored In ‘data’
        byte[] data = await client.GetByteArrayAsync("https://www.example.com/");
        //DateTime Variable To Store Download End Time.
        DateTime dt2 = DateTime.Now;
        //To Calculate Speed in Kb Divide Value Of data by 1024 And Then by End Time Subtract Start Time To Know Download Per Second.
        Console.WriteLine("ConnectionSpeed: DataSize (kb) " + data.Length / 1024);
        Console.WriteLine("ConnectionSpeed: ElapsedTime (secs) " + (dt2 - dt1).TotalSeconds);
        internetSpeed = "ConnectionSpeed: (kb/s) " + Math.Round((data.Length / 1024) / (dt2 - dt1).TotalSeconds, 2);
    }
    catch (Exception ex)
    {
        internetSpeed = "ConnectionSpeed:Unknown Exception-" + ex.Message;
    }
    Console.WriteLine(internetSpeed);
    return internetSpeed;
}
© www.soinside.com 2019 - 2024. All rights reserved.