考慮下面的情況,一個servlet已經用Java編寫,一旦你連接到servlet,它就開始寫入OutputStream,比如說1000萬字節,每次1個字節。爲什麼流中的「Close」調用在C#和Java中的行爲有所不同?
您有一個客戶端程序,它讀取servlet的響應流並讀取100個字節並調用close。現在,如果您的客戶端程序使用Java,則流會立即關閉,服務器將停止發送內容,但如果客戶端程序使用C#,則close調用需要很長時間才能完成,因爲它顯然等待服務器完成寫入所有內容1000萬字節。
所以,我對這個兩個問題,
- 爲什麼C#行爲不同?
- 我該怎麼做才能確保C#流上的Close調用立即關閉流,並且不允許服務器繼續發送數據?
任何指針將不勝感激:-)
(刪除了只適用於**服務器**調用'Close()'的答案;因爲它是調用Close()的*客戶端*,所以這是不同的) –
Java和C#doesn關閉套接字似乎不一樣。也許你的C#代碼有bug,應該在這裏發佈。 – irreputable
'爲什麼C#和Java中的流上的「Close」調用行爲不同?'因爲它們是兩個完全獨立的系統和框架,並且從來沒有人聲稱它們以相同的方式工作。但要回答你的問題,你需要向我們展示一些代碼。 – Bobby