【问题标题】:How is port redirecting done in C in Windows?如何在 Windows 中的 C 中完成端口重定向?
【发布时间】:2013-02-13 13:02:08
【问题描述】:

我有一个 C 项目,我在其中接收 HTTP GET 请求(端口 10000),处理它并发送适当的响应。我使用 winsock 库进行网络连接。我还有一个模块在不同的端口(端口 10001)上接收 HTTPS 请求。客户端指定它必须发送到哪个端口,如果它正在发送 http 消息,它将在端口 10000 上发送,如果是 https 请求,它将发送到端口 10001。 因此,我意识到,即将到来的请求是 HTTP 或 HTTPS 请求。 有一个要求,客户端将只指定一个端口号,无论是 HTTP 还是 HTTPS,即它只会在端口 10000 上发送。

所以现在,当 HTTPS 消息到达端口 10000 时,它将全部加密,但我希望该消息转到端口 10001。有没有办法在服务器级别区分 HTTP 或 HTTPS 请求?

【问题讨论】:

    标签: c https port winsock2


    【解决方案1】:

    如果来自客户端的第一个字节是0x16,则它是 SSL 握手的开始。由于它不是 HTTP 请求的可能开始,您可以通过此属性区分请求。

    【讨论】:

    • 所有 HTTPS 消息都以 0x16 开头?我收到的数据是 char *buf;那么我必须写 if (*buf == '0x16') ?是这样写的吗?
    • 它们以 byte 0x16 开头,而不是 string "0x16"if (buf[0]==0x16)) { /* serve https */ } else { /* serve http */ }
    • 谢谢!会试试看!
    • HTTPS 握手以 0x16 开头,但通过 HTTPS 发送的其余消息不以 0x16 开头
    猜你喜欢
    • 1970-01-01
    • 2019-08-13
    • 2011-05-17
    • 2016-05-20
    • 1970-01-01
    • 2016-06-15
    • 2018-10-31
    • 2010-12-21
    • 2017-06-27
    相关资源
    最近更新 更多