我有一個客戶端服務器應用程序,我觀察到(在本地環境,即局域網),當我關閉連接客戶端到服務器一端的流,在另一端可觀察的(例如,如果在我的客戶端中關閉了將客戶端連接到服務器的流,而在另一端的服務器上,則這是顯而易見的,並且它被報告爲圍繞我的服務器流的try-catch塊中的Exception代碼)。流關閉時發送的信號
這怎麼可能?客戶端/服務器是否在關閉流之前發送特定的代碼,以便關閉流?它是否也適用於更廣泛的網絡(如大型廣域網)?
更大的問題是,當我關閉一端的流,我可以依靠的事實,在另一端它會被注意到,並因此關閉該線程,而不是等待無盡的接收數據,永遠不會是因爲該流被關閉了嗎?
客戶端和服務器之間的最大距離爲700公里(我不知道它是否發揮了作用,但我只是在案件提到)
謝謝!
如果我嘗試從我的客戶端發送數據,並且連接已關閉,但由於未知因素尚未通知我的客戶端已關閉連接,客戶端是否會收到錯誤消息發送沒有收到? – Alex 2010-12-20 11:33:24
假設服務器計算機處於打開狀態,將數據發送到已關閉的連接時會出現「連接重置」錯誤消息。如果主機關閉,您可能會收到ICMP錯誤消息。如果消息根本沒有被確認,你的本地TCP堆棧會在一段時間後產生一個錯誤。 – 2010-12-20 12:58:09