Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows中的C如何实现端口重定向?_C_Https_Port_Winsock2 - Fatal编程技术网

Windows中的C如何实现端口重定向?

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

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


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

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

所有HTTPS消息都以0x16开始?我收到的数据是char*buf;那么我必须写if(*buf=='0x16')?这是写入方式吗?它们以字节0x16开始,而不是以字符串“0x16”开始<代码>如果(buf[0]==0x16)){/*服务https*/}其他{/*服务http*/}谢谢!我会试试看!HTTPS握手以0x16开始,但通过HTTPS发送的其余消息不以0x16开始