第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么第二次服務端不用shutOutputStream,客戶端不用shutInputStream?

服務器接收客戶端信息的時候,老師讀取完,就shutInputStream(),但是第二次服務器向客戶端發(fā)送信息時卻不用shutOutputStream(),客戶端也是,我自己加下去試了下,卻報錯為什么?求大神解答下,感激不盡

正在回答

4 回答

這么說吧,客戶端發(fā)送信息給服務端,服務端接受,客戶端,服務器端老師完全可以不關閉輸入輸出流,直接關閉socke和相關資源,信息依然可以正常傳r送。這是因為關閉了客戶端和服務器端socket,程序在終結socket之前,會將相應的信息發(fā)送完成,信息處理完成,然后關閉。如果,你加上服務器給客戶端發(fā)送信息,然后客戶端接收,你就必須知道??蛻舳酥笆怯梢粋€輸出流在發(fā)送數(shù)據(jù),如果它不關閉,就意味著數(shù)據(jù)仍然沒有發(fā)送完,這時候,服務器端接收到的輸入流就沒有結束信號,程序就會一直卡在那里。只有關閉了,才能給服務器端一個信號,告訴他我把信息發(fā)完了。至于老師為什么第二次服務器發(fā)送客戶端信息的時候沒加shutdown,實際上是可以加上的,沒任何問題,我不知道你的為啥出問題了,當然最后不加也是可以的,因為最終他的關閉socket也會讓客戶端接收到終止信號。

這是關閉輸出流的源碼,其實他就干了兩件事;shutout=true,getImpl().shutdownput();

http://img1.sycdn.imooc.com//573e7e1d0001144e04510220.jpg

0 回復 有任何疑惑可以回復我~

我說一下個人理解,如果有錯還望指出

close關閉的是整個socket,shutdown關閉的輸入或者輸出流

當需要切換的時候,我可以shutdown掉一個流,這時候整個socket并不會關閉

所以,最后只要close了,關不關閉并不影響;因為需要切換輸入輸出,所以才shutdown了

像一開始沒有服務器端再回復客戶端的時候,我們不去shutdown直接close也是可以的

0 回復 有任何疑惑可以回復我~
#1

lucitas 提問者

額,那為什么我在第二次在close錢加入shutdown,關閉了最后一個流,但是程序會出現(xiàn)異常,直接close才正確運行,照你的說法來,結果應該是二者等價,close前 shutdown并不會對結果有影響才對啊. 我自己測驗,當socket中只有一個流,你close前,加不加shutdown 都可以,如果兩個流你都shutdown了,再close好像會報錯。會不會是,shutdown的功能其實主要只是用來在開啟另一個流前關閉前一個流呢。
2016-04-09 回復 有任何疑惑可以回復我~

同問!

0 回復 有任何疑惑可以回復我~

同問!

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么第二次服務端不用shutOutputStream,客戶端不用shutInputStream?

我要回答 關注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號