2017-07-20 48 views
0

我有ssl-server和ssl-client。它與Boost ssl示例幾乎相同。boost ssl半關閉socket是可能的嗎?

現在,

服務器開放(聽),然後客戶端加入和將數據發送到服務器。

當發送數據完成

從客戶端關閉套接字與socket_.lowest_layer().close();

我想改變這出頭半關閉:發送關閉,打開讀取

和客戶端是前半段發送boost::asio::error::eof -關。

然後服務器捕獲boost::asio::error::eof並關閉服務器的套接字。

有沒有更好的事情?和提升有半點?

回答

1

TCP半關閉(輸出關機)不能與SSL一起使用。 SSL發送close_notify,以便檢測到截斷攻擊,並在邏輯上在兩個方向上關閉SSL連接。如果您只是自己關閉底層TCP套接字,SSL會認爲截斷攻擊並使SSL連接不可用。

我不明白你爲什麼要改變你所描述的。 SSL本身已經與close_notify本身一樣。

+0

感謝您的評論。有沒有其他方式來關閉服務器的套接字。我認爲從客戶端的關閉可能是危險的...... //當客戶端關閉時,我的服務器只能捕獲eof.and我需要其他方式 – hybang

+1

我不明白這個問題。只需在SSL層關閉它即可。您不必等待客戶先關閉,但如果他仍在發送,他當然會得到一個錯誤。 – EJP

+0

當許多客戶端連接到服務器。客戶發送完畢後會關閉。在這個時候,我擔心服務器保持套接字或會話,直到超時或其他。這是無用的擔心嗎? – hybang

相關問題