我想编写同步文件并在后台运行的应用程序(守护进程)。我只想使用一部分带宽(更好的是百分比,但固定限制是可以接受的),因为对带宽的完全访问会干扰用户的应用程序。我怎样才能以编程方式做到这一点? ipfw 会影响任何应用程序(我只想限制我的应用程序),并且在苹果手册页中它已被弃用。而且我使用 https 端口,所以我不能只限制与该端口的连接。 还有其他解决方案吗? 谢谢。
最佳答案
目前尚不清楚您是否知道目标带宽是多少,还是不知道。
如果您知道可用带宽为 100KB/s,那么最简单(也可能是最好)的事情就是在您的应用程序中进行数学计算并测量您在套接字上读取和写入的数量。即运行读取量和耗时的计数器,并在循环中强制 sleep ,以确保您总体上达到这些限制。
如果您不知道目标是什么(考虑到所有环境都不同,我真的不知道您如何知道),那么事情就会变得更加复杂。大多数应用程序只是为用户提供一种选择应用程序带宽上限的方法。这是唯一可移植的方式。
对于仅适用于 OS X 的应用程序,您可以依赖特定的附加功能,但 OS X 已经在各个版本的防火墙实现之间进行了转换,并且它们不是应用程序感知的防火墙。因此,如果您想使用它们的功能来限制您的应用程序,您必须根据可能仅与您的应用程序匹配的主机和/或端口设置规则。
您可以采取更多深奥的操作来实现 NETBLT 作为您的通信协议(protocol),而不是普通的 TCP,以表明您的流量是“批量”或较大且对延迟不敏感。但大多数应用程序只是给予用户控制权。
关于macos - OS X 中我的应用程序的带宽限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11465945/