2

ファイルを同期してバックグラウンドで実行するアプリケーション(デーモン)を作成したいと思います。また、帯域幅へのフルアクセスはユーザーのアプリケーションに干渉するため、帯域幅の一部のみを使用したいと思います(パーセント単位の方が良いですが、固定制限は許容されます)。プログラムでそれを行うにはどうすればよいですか?ipfwはすべてのアプリケーションに影響し(そして私は自分のアプリだけを制限したい)、アップルのマニュアルページでは非推奨になっています。また、httpsポートを使用しているため、そのポートへの接続を調整することはできません。他に解決策はありますか?ありがとうございました。

4

1 に答える 1

2

これがターゲット帯域幅が何であるかを知っている場合なのか、それともわからない場合なのかは明らかではありません。

使用可能な帯域幅が100KB/sであることがわかっている場合、最も簡単な(そしておそらく最良の)方法は、アプリケーションで計算を行い、ソケットに対して読み書きする量を測定することです。これは、読み取り量と経過時間のカウンターを実行し、ループでスリープを強制して、これらの制限を全体として確実に達成するようにします。

ターゲットが何であるかわからない場合(そして、すべての環境が異なることを考えると、どうすればよいか本当にわかりません)、それはもう少し複雑になります。ほとんどのアプリケーションは、ユーザーがアプリの帯域幅の上限を選択する方法を提供するだけです。これが唯一のポータブルな方法です。

OS Xのみのアプリの場合、特定の追加機能に依存できますが、OS Xはバージョン間でファイアウォールの実装間で移行されており、アプリケーション対応のファイアウォールではありません。したがって、それらの機能を使用してアプリケーションを抑制したい場合は、アプリケーションにのみ一致する可能性が高いホストやポートに基づいてルールを設定する必要があります。

トラフィックが「バルク」または大規模で遅延の影響を受けないことを示すために、プレーンTCPの代わりに通信プロトコルとしてNETBLTを実装することで実行できる、より難解なアクションがあります。しかし、ほとんどのアプリケーションはユーザーが制御できるようにするだけです。

于 2012-12-31T18:55:50.960 に答える