Как я могу получить «Сколько сетевых данных (мобильных или WiFi) используется при вызове API в настольном приложении c #» - PullRequest
0 голосов
/ 08 октября 2019

Как я могу получить «Сколько сетевых данных (мобильных или WiFi) используется при вызове API в настольном приложении c #» Я хочу знать, Как я могу получить общее количество использованных данных при вызове службы API

Iсделали следующий код:

if (!NetworkInterface.GetIsNetworkAvailable())
    return;

NetworkInterface[] interfaces
    = NetworkInterface.GetAllNetworkInterfaces();

foreach (NetworkInterface ni in interfaces)
{
    Console.WriteLine("    Bytes Sent: {0}",
        ni.GetIPv4Statistics().BytesSent);
    Console.WriteLine("    Bytes Received: {0}",
        ni.GetIPv4Statistics().BytesReceived);
    lblCarrierCharge.Text = " Bytes Received: " + ni.GetIPv4Statistics().BytesReceived;
}

API CALL

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(cloudEndpoint);
request.Method = "Get";
long inputLength = request.ContentLength;
long outputLength = 0;
string responseContent = "";

DateTime beginTimestamp = DateTime.Now;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();

1 Ответ

0 голосов
/ 09 октября 2019

Для вычисления общего количества байтов, полученных за вызов. Вы хотите сохранить текущее значение .GetIPv4Statistics().BytesReceived, а затем после вашего вызова выполнить тот же вызов и вычесть новое значение из предыдущего.

int previousNetworkBytesSent = 0;

foreach (NetworkInterface ni in interfaces)
{
    previousNetworkBytesSent += ni.GetIPv4Statistics().BytesReceived;
}

// perform your call here

int newNetworkBytesSent = 0;

foreach (NetworkInterface ni in interfaces)
{
    newNetworkBytesSent += ni.GetIPv4Statistics().BytesReceived;
}

int totalBytesUsed = newNetworkBytesSent - previousNetworkBytesSent;

Проверьте, подходит ли тип данных,и не стесняйтесь оптимизировать это.

...