官术网_书友最值得收藏!

4.2.3 半關閉

半關閉(half-close)提供了這樣一種能力:套接字連接的一端可以終止其輸出,同時仍舊可以接收來自另一端的數據。

這是一種很典型的情況,例如我們在向服務器傳輸數據,但是一開始并不知道要傳輸多少數據。在向文件寫數據時,我們只需在數據寫入后關閉文件即可。但是,如果關閉一個套接字,那么與服務器的連接將立刻斷開,因而也就無法讀取服務器的響應了。

使用半關閉的方法就可以解決上述問題。可以通過關閉一個套接字的輸出流來表示發送給服務器的請求數據已經結束,但是必須保持輸入流處于打開狀態。

如下代碼演示了如何在客戶端使用半關閉方法:

服務器端將讀取輸入信息,直至到達輸入流的結尾,然后它再發送響應。

當然,該協議只適用于一站式(one-shot)的服務,例如HTTP服務,在這種服務中,客戶端連接服務器,發送一個請求,捕獲響應信息,然后斷開連接。

java.net.Socket 1.0

·void shutdownOutput()1.3

將輸出流設為“流結束”。

·void shutdownInput()1.3

將輸入流設為“流結束”。

·boolean isOutputShutdown()1.4

如果輸出已被關閉,則返回true。

·boolean isInputShutdown()1.4

如果輸入已被關閉,則返回true。

主站蜘蛛池模板: 庆城县| 龙井市| 绥棱县| 平潭县| 桓台县| 长治市| 全州县| 出国| 全南县| 孝感市| 天门市| 陇川县| 麦盖提县| 东至县| 佛冈县| 边坝县| 定边县| 维西| 和静县| 江津市| 新津县| 德化县| 新河县| 将乐县| 太谷县| 宁明县| 巴马| 望都县| 固阳县| 八宿县| 精河县| 邹城市| 逊克县| 和政县| 琼海市| 宜兴市| 鹤庆县| 盘锦市| 彭州市| 宁城县| 阿拉善盟|