2012-07-13 2 views
2

파일을 동기화하고 백그라운드에서 실행되는 응용 프로그램 (데몬)을 작성하고 싶습니다. 대역폭에 대한 전체 액세스가 사용자의 응용 프로그램에 영향을 미치기 때문에 대역폭의 일부만 사용하려고합니다 (퍼센트는 더 좋지만 고정 된 제한은 허용됩니다). 프로그래밍 방식으로 어떻게 할 수 있습니까? ipfw는 모든 응용 프로그램에 영향을 미치며 (내 응용 프로그램 만 제한하고 싶습니다) 사과 설명서 페이지에서는 더 이상 사용되지 않습니다. 그리고 나는 https 포트를 사용하므로 포트에 대한 연결을 막을 수 없습니다. 다른 해결책이 있습니까? 감사합니다.OS X에서 내 응용 프로그램에 대역폭 제한

답변

2

목표 대역폭이 무엇인지 알지 못하는 경우인지 또는 모르는 경우인지는 분명하지 않습니다.

사용 가능한 대역폭이 100KB/s라는 것을 알고 있다면 응용 프로그램에서 가장 간단하고 (아마도 가장 좋은) 일은 계산을 수행하고 소켓에 읽고 쓰는 양을 측정하는 것입니다. 이는 읽은 금액과 경과 한 시간의 카운터를 실행하고 루프에서 잠자기를 적용하여 이러한 제한을 총체적으로 달성하도록합니다.

이 목표가 무엇인지 알지 못한다면 (그리고 모든 환경이 다르기 때문에 실제로 어떻게 할 수 있는지 모르겠습니다) 그러면 좀 더 복잡해집니다. 대부분의 응용 프로그램은 사용자가 응용 프로그램의 대역폭 한도를 선택하는 방법을 제공합니다. 이것은 유일한 휴대용 방법입니다.

OS X 전용 응용 프로그램의 경우 특정 추가 기능을 사용할 수 있지만 OS X은 응용 프로그램을 인식하지 못하는 방화벽 버전이 아닌 다양한 방화벽 구현으로 전환되었습니다. 따라서 응용 프로그램을 제한하기 위해 해당 기능을 사용하려면 응용 프로그램과 일치하는 호스트 및/또는 포트를 기반으로 규칙을 설정해야합니다.

일반 TCP 대신 통신 프로토콜로 NETBLT를 구현할 수있는 더 복잡한 작업이있어 ​​트래픽이 "대량"또는 대기 시간에 민감하지 않음을 나타냅니다. 그러나 대부분의 응용 프로그램은 사용자 컨트롤을 제공합니다.