【发布时间】:2016-08-17 09:40:59
【问题描述】:
Windows 8 及更高版本已设置为对 Wi-Fi(和其他)连接进行计量(并附带费用,但此处无关紧要)。我使用了Native Wi-Fi API 和WCM APIs 来查找所需的信息。
使用套接字,可以绑定、有选择地发送和忽略来自/到计量连接的传入数据包。但是,如何使用WinHTTP APIs 做到这一点?
StackOverflow 和SuperUser 上的一些答案建议使用 ForceBindIP,但我们不能简单地使用它。
如果 MS Windows 已经实现了计量连接,理想情况下应该有一些方法来指示 WinHTTP 服务不要使用特定的连接。
【问题讨论】:
-
“如果 MS Windows 实现了计量连接,则必须有某种方法来指示 WinHTTP 服务不使用特定连接。” - 为什么?
-
@IInspectable,以便应用程序可以限制计量连接上的 HTTP 数据使用。今天,大多数流量都在 HTTP 上。例如,Outlook 是愚蠢的,它只会在任何网络被计量时警告用户。这可能是操作系统没有此功能。浏览器也无法通过给定的适配器限制其网络流量。
-
这就解释了为什么你认为应该有办法。它没有解释为什么你认为必须有办法。我认为限制计量连接上的 HTTP 数据使用也不是一个有用的设置。无论协议如何,限制任何流量都是合理的。
-
"我无法从 HINTERNET 句柄中获取套接字句柄" - 实际上,你可以。使用
InternetQueryOption()有一个INTERNET_OPTION_DIAGNOSTIC_SOCKET_INFO选项,它返回一个包含SOCKET句柄的INTERNET_DIAGNOSTIC_SOCKET_INFO结构。 -
@RemyLebeau,感谢您的提示。但是,我发现此选项不适用于 Windows 7 及更高版本。我会尝试使用 WinHttp 回调并尝试从那里绑定到特定的适配器。
标签: c++ c windows winapi winhttp