0

ここに問題があります。プログラムを作成する必要があります。このプログラムは、インターネットの速度と、コンピューターが現在使用している速度を測定し、2 つのシリーズの折れ線グラフに表示します。グーグルとstackoverflowへの投稿に導かれて、私はこのコードで終わりました:

private long bytesReceivedPrev = 0;
    private void CheckBandwidthUsage(DateTime now)
    {
        NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();
        long bytesReceived = 0;
        foreach (NetworkInterface inf in interfaces)
        {
            if (inf.OperationalStatus == OperationalStatus.Up &&
                inf.NetworkInterfaceType != NetworkInterfaceType.Loopback &&
                inf.NetworkInterfaceType != NetworkInterfaceType.Tunnel &&
                inf.NetworkInterfaceType != NetworkInterfaceType.Unknown && !inf.IsReceiveOnly)
            {
                bytesReceived += inf.GetIPv4Statistics().BytesReceived;
            }
        }

        if (bytesReceivedPrev == 0)
        {
            bytesReceivedPrev = bytesReceived;
        }
        long bytesUsed = bytesReceived - bytesReceivedPrev;
        double kBytesUsed = bytesUsed / 1024;
        double mBytesUsed = kBytesUsed / 1024;
        internetUsage.Add(now, mBytesUsed);
        if (internetUsage.Count > 20)
        {
            internetUsage.Remove(internetUsage.Keys.First());
        }
        bytesReceivedPrev = bytesReceived;
    }

    private void CheckInternetSpeed(DateTime now)
    {
        WebClient client = new WebClient();
        Uri URL = new Uri("http://sixhoej.net/speedtest/1024kb.txt");
        double starttime = Environment.TickCount;
        client.DownloadFile(URL, Constants.GetAppDataPath() + "\\" + now.Ticks);
        double endtime = Environment.TickCount;

        double secs = Math.Floor(endtime - starttime) / 1000;

        double secs2 = Math.Round(secs, 0);

        double kbsec = Math.Round(1024 / secs);

        double mbsec = kbsec / 100;

        internetSpeed.Add(now, mbsec);
        if (internetSpeed.Count > 20)
        {
            internetSpeed.Remove(internetSpeed.Keys.First());
        }
        client.Dispose();
        try
        {
            // delete downloaded file
            System.IO.File.Delete(Constants.GetAppDataPath() + "\\" + now.Ticks);
        }
        catch (Exception ex1)
        {
            Console.WriteLine(ex1.Message);
        }
    }

問題は、インターネットからいくつかの大きなファイルをダウンロードすると (たとえば、Web ブラウザー経由の Blender インストーラー)、インターネット速度シリーズがインターネット使用量シリーズを下回っていることです。(写真参照) インターネットメーターの異常 率直に言って、私はこのトピックをよく理解していません。

4

0 に答える 0