Das Problem mit einer konstanten Menge von 1 Sekunde nach jeder Übertragung ist, dass Sie abgehackte Netzwerkleistung haben.
Lassen Sie BandwidthMaxThreshold den gewünschten Bandbreitenschwellenwert.
Lassen Sie TransferRate die aktuelle Übertragungsrate der Verbindung sein.
Then ...
Wenn Sie Ihren TRANSFER erkennen> BandwidthMaxThreshold dann tun Sie einen Sleeptime = 1 + Sleeptime * 1,02 (Erhöhung Schlafzeit um 2%)
Vor oder nach jedem Netzwerkbetrieb eines tun Sleep (SleepTime)
Wenn Sie feststellen, dass Ihr TransferRate viel niedriger als Ihr BandwidthMaxThreshold ist, können Sie SleepTime verringern. Alternativ könntest du deine SleepTime im Laufe der Zeit immer verringern/verringern. Schließlich wird Ihre SleepTime wieder 0 erreichen.
Statt einer Erhöhung von 2% können Sie auch linear den Unterschied zwischen TransferRate - BandwidthMaxThreshold erhöhen.
Diese Lösung ist gut, weil Sie nicht schlafen müssen, wenn das Netzwerk des Benutzers nicht so hoch ist, wie Sie es möchten.
Stellen Sie die Socket-Empfangspuffergröße auf das gewünschte Produkt mit Bandbreitenverzögerung ein. – EJP