我有一个使用本地库发送UDP视频到其他IP地址的C#应用程序,我无法控制该库的流量。
我的应用程序还调用另一台服务器的Web服务,使用WebRequest
来进行控制。
问题是:
当我的互联网带宽较低时,视频流会占用所有带宽。因此,在此期间,我无法从我的Web服务方法中获取响应。
是否有任何方法可以优先考虑WebRequest
或节省一些带宽以便我可以安全地获得响应?
我有一个使用本地库发送UDP视频到其他IP地址的C#应用程序,我无法控制该库的流量。
我的应用程序还调用另一台服务器的Web服务,使用WebRequest
来进行控制。
问题是:
当我的互联网带宽较低时,视频流会占用所有带宽。因此,在此期间,我无法从我的Web服务方法中获取响应。
是否有任何方法可以优先考虑WebRequest
或节省一些带宽以便我可以安全地获得响应?
我不知道C#中有任何可以按此方式优先处理流量的方法。
我知道这不是完全符合堆栈溢出的答案,但这是我在没有适当的网络基础设施访问时处理流媒体服务不会占用带宽的方式。
当您确定要使用哪种方法时,我建议您查看https://superuser.com,它应该能够回答您在实现解决方案时遇到的任何障碍。
解决方案一。
将其拆分为2个服务,并通过每个服务的REST API或数据库轮询进行通信。然后使用网络限制程序来优先处理其中一个服务的流量。https://www.netlimiter.com/和https://netbalancer.com/是可以做到这一点的软件示例,但还有许多其他软件。
优点:您将具有流媒体服务的动态限制。
缺点:您必须在服务器上运行另一个程序,而且它绝对不是免费的。
解决方案二。
使用IIS,在IIS中有一个内置的限制,https://www.iis.net/configreference/system.applicationhost/weblimits,查看maxGlobalBandWidth。然后您有两个通过REST或数据库轮询进行通信的网站。
优点:简单易用的解决方案。
缺点:您的限制不是动态的,而是在配置文件中。
请注意,如果您的互联网网络速度变化很大,则不应使用此方法。
您可以通过此方法以任何数量的方式限制带宽,如何执行最终取决于您的要求。如果暂停转发UDP帧在开始Web请求时并在获取响应后恢复转发是可以接受的,则可以这样做。如果不能,则可以在中继服务器中插入适当的延迟,以动态地将平均UDP帧/秒限制为50%(或其他百分比),同时等待Web请求。
您可以在此处查看DNS请求的简单UDP中继服务器实现示例,基本原理将相同: