Wir entwickeln eine Anwendung, die auf dem PC installiert wird und einige Uploads und Downloads von und zu unserem Server durchführt. Eine der Anforderungen besteht darin, zu erkennen, ob die Internetverbindung derzeit besetzt ist (sagen wir über 50% Auslastung) und wenn dies der Fall ist, muss sie sich zurückziehen und es ein anderes Mal versuchen. Der Hauptgrund ist, sicherzustellen, dass die App die Benutzererfahrung nicht beeinträchtigt, wenn sie mitten im Spiel sind, Online-Filme ansehen oder Dateien aggressiv herunterladen.
Nachdem ich viel über Google und SO nachgedacht und geforscht habe, habe ich immer noch keinen guten Weg gefunden, dies zu implementieren, also habe ich beschlossen, das hier rauszuwerfen. Die Anwendung ist in C #, .NET 4.0 implementiert und ich suche nach allen Formen von Antworten - entweder Implementierung in C # oder anderen Sprachen, Pseudo-Logik oder Ansatz, wie zu erreichen - Messung der Internet-Verkehrsnutzung auf lokaler PC mit ausreichender Genauigkeit.
Um Doppelarbeit zu vermeiden, habe ich diese bisher versucht (und warum sie nicht geeignet sind)
Also hier ist es, ich bin alle verwirrt und auf der Suche nach einem Rat. Ich habe den Fragetext hervorgehoben, damit ihr euch nicht verirrt und euch fragt, was die Frage ist. Danke.
Sie können UPnP verwenden, um den Router abzufragen und die Anzahl der über das Netzwerk gesendeten und empfangenen Bytes abzurufen. Sie können diesen Wert auf dem Router überprüfen, um festzustellen, um was für eine Aktivität es sich handelt. Leider scheint diese Funktionalität nicht gut dokumentiert zu sein, aber es ist möglich, UPnP-Kommunikationsfunktionen innerhalb einer C # -Anwendung zu implementieren. Sie müssen UDP verwenden, um nach dem Router zu suchen (UPnP discover). Wenn Sie das Gerät gefunden haben, können Sie dessen Funktionalität abfragen und anschließend die Anzahl der gesendeten und empfangenen Pakete für das Internet Gateway-Gerät mit einem WebClient (TCP) abfragen.
%Vor% %Vor%Haben Sie in Betracht gezogen, Background Intelligent Transfer Service ( BITS) . Es ist entworfen, um diesen Job bereits zu machen:
Der Background Intelligent Transfer Service (BITS) überträgt Dateien (Downloads oder Uploads) zwischen einem Client und einem Server und stellt Fortschrittsinformationen für die Übertragungen bereit. Sie können auch Dateien von einem Peer herunterladen.
und
Behalten Sie die Reaktionsfähigkeit anderer Netzwerkanwendungen bei.
Ich bin mir nicht sicher, ob es eine verwaltete Schnittstelle dazu gibt (ich kann einen Verweis auf Powershell-Cmdlets sehen), daher müssen Sie möglicherweise COM-Interop verwenden, um es zu verwenden.
Tags und Links language-agnostic .net c# network-utilization