2017-06-14 13 views

回答

1

您需要查看TLS套接字繼承的TCP套接字的Net模塊的doc文檔。 tls.TLSSocketnet.Socket的一個子類。對於類層次結構的文檔而言,這是一個常見問題,您不知道基類文檔中記錄了很多東西。在that doc,它說這對於end事件:

當插座的另一端發送FIN分組,從而結束 插座的可讀側射出。

默認情況下(allowHalfOpen爲false)套接字將發回一個FIN數據包 ,並在其寫出其 掛起寫入隊列後銷燬其文件描述符。但是,如果allowHalfOpen設置爲true,則 套接字不會自動結束()其可寫側,從而允許 用戶寫入任意數量的數據。用戶必須明確地調用end() 來關閉連接(即發回一個FIN數據包)。

對於close事件,that same doc這樣說:

一次發射插座完全關閉。參數had_error是一個 布爾值,它表示由於傳輸 錯誤而導致套接字已關閉。

這意味着close事件而來的end事件之後,因爲當接收到所述事件end插座可以是靜止至少部分地打開。


所以,你會得到end時對方已經告訴你它不再接受數據(收到FIN數據包),你會得到close當插座,現在是完全封閉的。