是否有使用HTTP_SEND_RESPONSE_FLAG_OPAQUE标志(需要WebSocket支持)的HttpSendHttpResponse使用示例?

时间:2019-02-19 14:09:28

标签: c++ winapi websocket wininet winhttp

我正在使用HttpSendHttpResponse()HTTP_SEND_RESPONSE_FLAG_OPAQUE标志,如Microsoft所建议的(仅使用101响应状态和使用WebSocketBeginServerHandshake()函数准备的响应头),但是我收到一个 ERROR_INVALID_PARAMETER错误。

没有此标志,我可以通过浏览器与服务器建立WebSocket连接,但据我所知,我将无法将该连接用作WebSocket,因为HTTP.SYS会尝试将连接流量解释为HTTP框架。

有人可以给我提供一个使用HttpSendHttpResponse()标志的HTTP_SEND_RESPONSE_FLAG_OPAQUE使用示例的链接吗?

2 个答案:

答案 0 :(得分:0)

我找到了正确使用HTTP_SEND_RESPONSE_FLAG_OPAQUE标志的方法:它必须与HTTP_SEND_RESPONSE_FLAG_MORE_DATA标志一起使用。不幸的是,Microsoft在他们的文档中没有提及这一细微差别。

答案 1 :(得分:0)

基于文档:HttpSendHttpResponse

  

HttpSendHttpResponse对于所有其他返回ERROR_INVALID_PARAMETER   如果使用HTTP_SEND_RESPONSE_FLAG_OPAQUE标志,则为HTTP响应类型。

因此可以预期。只需暂时忽略此错误,然后您可以检查接收器部件以查看它是否可以接收正确的数据。