2
要將文件發送到服務器,我在Windows HTTPS PUT請求,它看起來像這樣:如何在會話中爲許多put請求重用相同的HTTPS連接?
hSession = WinHttpOpen( L"Agent/1.0",..
hConnect = WinHttpConnect(hSession,..
hRequest = WinHttpOpenRequest(hConnect, L"PUT",..
WinHttpSetCredentials(hRequest,..
WinHttpAddRequestHeaders(hRequest,..
WinHttpSendRequest(hRequest,..
WinHttpWriteData(hRequest,..
WinHttpReceiveResponse(hRequest,..
WinHttpQueryHeaders(hRequest,..
if (hRequest) WinHttpCloseHandle(hRequest);
if (hConnect) WinHttpCloseHandle(hConnect);
if (hSession) WinHttpCloseHandle(hSession);
命令的這個包是運行的每一個文件,它應該被髮送到服務器。從頭開始爲每個要發送的文件建立連接會產生額外的開銷。現在我正在尋找一種方法來減少這種開銷。
所以我有兩個問題:
- 是否有必要打開和關閉每個PUT請求一個新的HTTPS連接?
- 有沒有辦法在會話中爲許多put請求建立會話並重用相同的HTTPS連接?
所有你需要做的是停止關閉會話和連接。 WinHTTP(假定版本爲5.1)在內部處理所有這些事情,管理持久性TCP連接池,並讓請求僅在實際發送請求和接收響應時「借用」連接。 –
@David Schwartz,我給你正確的嗎?我可以是這樣的: hSession = WinHttpOpen(L 「代理/ 1.0」,.. hConnect = WinHttpConnect(hSession,.. 的(...) { hRequest = WinHttpOpenRequest(hConnect,L 「PUT」 ,.. WinHttpSetCredentials(hRequest,.. WinHttpAddRequestHeaders(hRequest,.. WinHttpSendRequest(hRequest,.. WinHttpWriteData(hRequest,.. WinHttpReceiveResponse(hRequest,.. WinHttpQueryHeaders(hRequest,..} 如果 ( hRequest)WinHttpCloseHandle(hRequest); if(hConnect)WinHttpCloseHandle(hConnect); if(hSession)WinHttpCloseHand勒(hSession); –
是的。您可以在同一會話中針對同一連接繼續發出儘可能多的請求。 –