2013-02-13 50 views
0

我有一個項目在C中,我收到HTTP GET請求(端口10000),處理它併發送適當的響應。我使用winsock庫進行網絡連接。另外我有一個模塊在不同的端口(端口10001)上接收HTTPS請求。客戶端指定它要發送到哪個端口,如果它正在發送一個http消息,它將在端口10000上發送,如果它是https請求,它將發送到端口10001. 由於這個,我意識到,即將到來的請求是HTTP或HTTPS請求。 有一個要求,即客戶端將只指定一個端口號,不管它是HTTP還是HTTPS,即只發送端口10000.在Windows中如何在C中完成端口重定向?

所以現在,當一個HTTPS消息出現在端口10000上時,它將會所有的加密,但我希望該消息去端口10001.有沒有什麼辦法來區分在服務器級別的HTTP或HTTPS請求?

回答

2

如果來自客戶端的第一個字節是0x16,那麼這是SSL握手的開始。由於HTTP請求不可能開始,因此可以通過此屬性區分請求。

+0

所有的HTTPS消息都以0x16開始?我收到的數據是char * buf;那麼我必須寫if(* buf =='0x16')?這是寫的方式嗎? – user1692342 2013-02-13 14:14:43

+1

它們以**字節0x16 **開始,而不是**字符串「0x16」**。 'if(buf [0] == 0x16)){/ * serve https * /} else {/ * serve http * /}' – 2013-02-13 14:15:37

+0

謝謝!會試試看! – user1692342 2013-02-13 14:20:36