Windows8和更高版本有建立Wi-Fi (和其他)连接的设置,以进行计量(并附加了费用,但在这里无关紧要)。我已经使用Native Wi-Fi API和WCM APIs来查找所需的信息。
使用套接字,可以绑定、选择性地发送和忽略来自/到计量连接的传入数据包。但是,如何使用WinHTTP API(https://msdn.microsoft.com/en-us/library/windows/desktop/aa384257(v=vs.85%29.aspx)?)实现这一点
关于StackOverflow和SuperUser的一些答案建议使用ForceBindIP,但我们不能简单地使用它。
如果MS Windows已经实现了计量连接,理想情况下应该有一些方法来指示WinHTTP服务不使用特定的连接。
发布于 2016-08-20 05:49:11
不幸的是,WinInet和WinHTTP本身都不支持您所要求的内容。
您可能不得不求助于使用WinHTTP bind()函数来手动将WinInet/WinHTTP会话套接字绑定到所需的网络连接。
在Windows7之前,您可以通过使用带有INTERNET_OPTION_DIAGNOSTIC_SOCKET_INFO选项的InternetQueryOption()从HINTERNET句柄获取SOCKET句柄。它用有关连接的信息填充INTERNET_DIAGNOSTIC_SOCKET_INFO结构,包括实际的SOCKET句柄。
但是,Windows 7及更高版本不再支持此选项。虽然可以通过一些额外的工作手动跟踪SOCKET句柄,但我认为这不会对您有任何好处。套接字在尝试连接到服务器之前需要与bind()绑定。WinInet/WinHTTP提供的可用于查找SOCKET句柄的相关信息在连接尝试进行之前不可用。在连接之前,该信息还不在TCP路由表中。并连接了一个套接字,重新绑定套接字就太晚了。
所以我认为你在这件事上不走运,除非/直到微软公开一个新的API来支持绑定WinInet/WinHTTP会话,或者以其他方式再次公开对SOCKET句柄的访问。
https://stackoverflow.com/questions/38993073
复制相似问题