2010-05-19 51 views
1

我想做一個這樣的客戶端 - 服務器活動: 1.首先客戶端發送/寫入輸出流 2.服務器響應與一些數據將被讀取輸入流 3.收到數據後,客戶端再次向輸出流發送/寫入以響應數據已被接收從數據輸入流中讀取響應後,我可以寫入數據輸出流嗎?

現在,是否必須關閉輸出流並在執行第3步之前再次打開它? 如果有人可以給我一個片段,這將是非常有益的。謝謝

回答

1

你可以,如果你想,但你不需要。但是,在寫入OutputStream以備緩衝時,您需要flush()

問題是要知道什麼時候閱讀。如果要讀取的字節數可用並且性能不成問題,則可以使用阻止呼叫readFully。但這只是一種可能的策略。

+0

謝謝,但在我第二次寫入流之前,我得到了RuntimeException Stream關閉的異常。我沒有做關閉() – Sirius 2010-05-19 06:04:18

+0

我從其他評論中看到你正在做HTTP連接。如果是這樣,這是有道理的。瀏覽器不會使用相同的TCP鏈接發送兩個不同的POST。因此,基本上一旦第一個HTTP連接完成,它將被客戶端關閉(導致服務器在嘗試寫入該連接時拋出閉合流錯誤)。當客戶端發送第二個POST時,將啓動另一個TCP鏈接。 – 2010-05-20 01:13:06

+0

如果是這樣,你有解決這個問題。我真的被卡住了,第二個POST請求 – Sirius 2010-05-20 02:32:51

0

Google是你的朋友。見this

+0

感謝楚克,但我使用httpconnection,因爲我正在處理PHP腳本,並且我想通過POST發送數據。服務器端會捕獲它,然後執行一些數據庫查詢,將結果發送回客戶端讀取和處理。那麼客戶端會再次通過POST將處理結果發送回服務器。 – Sirius 2010-05-19 03:28:33

相關問題