2017-11-30 2 views
0

Ich habe eine Reihe von Prozessen, die zwischen Cloud und meiner Anwendung kommunizieren. Jetzt möchte ich diesen Prozessen nur durch meinen Code Bandbreite zuweisen. nach einigen Links, um herauszufinden, wie das geht. Und kam mit dieser Lösung: https://www.codeproject.com/Articles/18243/Bandwidth-throttlingBandbreitenbeschränkung in C++ - Anwendung

Wenn es andere Möglichkeiten gibt, in denen ich diese Bandbreite Drosselung erreichen kann, lassen Sie es mich wissen. Alle Referenzdokumente oder Links dazu sind sehr hilfreich.

+0

Was haben Sie versucht? Kannst du etwas Code zeigen, besonders den Teil, wo du mit der Kommunikation umgehst? https://StackOverflow.com/Help/how-to-ask – BNT

+0

Ich möchte etwas Logik finden, bevor ich mit der Entwicklung des Bandbreiten-Throttling-Konzepts beginne. Ich verstand, wie man das erreicht, indem man den Link durchgeht, den ich gepostet habe. Ich wollte nur wissen, ob es eine andere Art und Weise gibt, wie wir die Bandbreitenbeschränkung erreichen können. –

+0

Hatte einen kurzen Blick auf Ihren Link. Ich kenne nicht so viele Details zur Netzwerkprogrammierung, aber eine ziemlich einfache Idee dahinter wäre: Fügen Sie ['sleep()'] (http://en.cppreference.com/w/cpp/thread/sleep_for) s dazwischen ein die Schleifen, die in Netzwerk-Sockets schreiben (unter der Annahme, dass jede Kommunikation in einem eigenen Thread oder Prozess ist). Sie können die Bandbreite anpassen, indem Sie die Ruhezeit anpassen. Wenn mehrere Kommunikationen in demselben Prozess/Thread stattfinden, benötigen Sie wahrscheinlich etwas wie einen Scheduler und Send-Queues, die aus 'std' Containern erstellt werden können ... – Scheff

Antwort

0

Sie können die folgenden Techniken versuchen,

  1. Sie kann eine Übertragungsrate und einer aktuellen Übertragungsrate gewünschten Daten definieren. Die aktuelle Übertragungsrate hängt von der Anzahl der Bytes ab, die Sie pro Sekunde aus der Cloud senden/empfangen können. Sie können die aktuelle Übertragungsrate um einen Skalierungsfaktor X erhöhen/verringern, dies sollte jedoch nicht über die gewünschte Übertragungsrate hinausgehen. Sie können eine benutzerdefinierte Klasse für die Socket-Klasse erstellen, um Ihre Lese-/Schreibfunktionen auszuführen.

  2. Die zweite ist eine vordefinierte Datenmenge für die Sie nur eine Lese-/Schreiboperation auf dem Socket ausführen. Sie können diese Datenmenge als eine Einheit/ein Token betrachten, das für eine Lese-/Schreiboperation geeignet ist. Diese Technik können Sie auch Ihrer benutzerdefinierten Klasse hinzufügen.