2017-10-25 7 views
2

SignalR을 사용하여 데이터를 보내고받는 서버에 연결하는 UWP 앱이 있습니다.UWP 앱에서 SignalR 데이터 사용량을 프로그래밍 방식으로 추적

내 연결이 사용하는 데이터의 양을 (하루에) 추적하고 싶습니다.

또한 앱에서 모든 인터넷 사용을 추적 할 수 있으므로 SignalR을 구체적으로 타겟팅하는 것이 아니라 일반적인 기술도 유용합니다.

누구에게 의견이 있습니까? 내가 (https://docs.microsoft.com/en-us/dotnet/framework/network-programming/how-to-configure-network-tracing? - UWP 사용할 수 없음) 사용자 정의 Microsoft.AspNet.SignalR.Client.Http.IHttpClient 구현에보고 또한 네트워크 추적 한

이 @Ipsit 가우에 의해이 기술은 잘 작동, 나는 약간 생각

var internetConnectionProfile = NetworkInformation.GetInternetConnectionProfile(); 
if (internetConnectionProfile != null) 
{ 
    var networkUsage = await internetConnectionProfile.GetNetworkUsageAsync(DateTimeOffset.UtcNow.Date, DateTimeOffset.UtcNow, DataUsageGranularity.PerDay, new NetworkUsageStates()).AsTask(); 
    totalBytesSentToday = networkUsage.Aggregate(0ul, (memo, nu) => memo + nu.BytesSent); 
    totalBytesReceivedToday = networkUsage.Aggregate(0ul, (memo, nu) => memo + nu.BytesReceived); 
} 

답변

1

이 의지를 수정했다 당신을 위해 일해 -

string localDataUsage = string.Empty; 
    DateTime CurrTime = DateTime.Now; 
    TimeSpan TimeDiff = new TimeSpan(1, 0, 0); 
    ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile(); 

if (InternetConnectionProfile == null) 
{ 
    LocalUsageData.Text = "Not connected to Internet" + "\n"; 
} 
else 
{ 
    var LocalUsage = InternetConnectionProfile.GetNetworkUsageAsync(CurrTime.Subtract(TimeDiff), CurrTime); 

    localDataUsage = "Local Data Usage:\n"; 
    localDataUsage += " Bytes Sent  : " + LocalUsage.BytesSent + "\n"; 
    localDataUsage += " Bytes Received : " + LocalUsage.BytesReceived + "\n"; 
    LocalUsageData.Text = localDataUsage; 
} 
+0

감사합니다, 나는 약간 조정해야했지만이 훌륭한 작품 – Sam