我想编写应用程序(守护程序)同步文件并在后台运行的内容。我想只使用一部分带宽(百分比更好,但固定限制是可以接受的)因为完全访问带宽会干扰用户的应用程序。我怎么能以programmaticaly方式做到这一点? ipfw会影响任何应用程序(我只想限制我的应用程序),并且在苹果手册页中它已被弃用。我使用https端口,所以我不能限制连接到该端口。 还有其他解决方案吗? 谢谢。
答案 0 :(得分:2)
目前尚不清楚这是否是您知道目标带宽是多少的情况,或者是否是您不知道的情况。
如果您知道可用带宽是100KB / s,那么最简单(也可能是最好)的事情就是在您的应用程序中进行数学运算并计算您正在读取和写入套接字的数量。这是运行量读取和时间的计数器,并在循环中强制执行睡眠,以确保您在聚合中实现这些限制。
如果你不知道目标是什么,(并且我真的不知道你怎么可能,因为所有环境都不同),那么它会变得有点复杂。大多数应用程序只是为用户提供了一种为应用程序选择带宽上限的方法。这是唯一可移植的方式。
对于仅支持OS X的应用程序,您可以依赖于特定的附加功能,但OS X已跨版本跨防火墙实施转换,并且它们不是应用程序感知防火墙。因此,如果您想使用其功能来限制应用程序,则必须根据主机和/或端口设置可能仅与您的应用程序匹配的规则。
您可以采用更多深奥的操作来实施NETBLT作为通信协议而不是普通TCP,以指示您的流量是“批量”或大型且延迟不敏感。但大多数应用程序只是让用户控制。