我正在尝试使用 Win32 API 调用与需要 TLS 的 WebSocket 服务器通信。该应用程序是一个 Windows 服务。
这是我按顺序拨打的电话清单:
大部分调用成功返回,但连接未建立,从第7步开始返回错误
我一直在寻找一些显示正确顺序和大局概念的文章或示例,但没有找到任何东西。我的一堆关于 WebSockets 的书都没有帮助。我有这个在 Python 中工作,但我的客户需要 Win32 API。 Python 和 WireShark 让我看到了通过 TCP 逐步握手。
注意:证书在文件中,而不是在证书存储中 -
CERT_STORE_PROV_FILENAME_A
.
第 7 步之后出现第一个错误:“参数不正确”。
GetLastError()
回报:ERROR_INVALID_PARAMETER an option flag is specified that cannot be set.
我正在传递我从
request_handle
得到的 WinHttpOpenRequest()
并传递 0
没有标志。
对文章或示例有任何深刻的想法或指导,我们将不胜感激。
可以想象,API 调用的顺序很重要,但直到
WinHttpSendRequest()
才开始在线,所以我想这之前的一切都只是为请求调用而设置。
--还有--
有谁知道微软为什么这样说 WebSocket 协议组件 API:
在 Windows 上使用 WebSocket 协议的首选方法是通过 Windows HTTP 服务 (WinHTTP) API 或 Windows.Networking.Sockets 命名空间。
是否像已弃用的那样“首选”?首选,因为我们要删除它?
拥有 WebSocket 协议组件 API 然后说我们认为您不应该使用它有什么意义?