關(guān)于shutdown的問題
為什么要調(diào)用shutdowninput和shutdownoutput方法,不調(diào)用的話會沒有數(shù)據(jù),為什么???快瘋了,求大神給個詳細的解答?還有服務(wù)器接收到數(shù)據(jù)并寫出數(shù)據(jù),客戶端發(fā)送數(shù)據(jù)并接收數(shù)據(jù),不行嗎?
為什么要調(diào)用shutdowninput和shutdownoutput方法,不調(diào)用的話會沒有數(shù)據(jù),為什么???快瘋了,求大神給個詳細的解答?還有服務(wù)器接收到數(shù)據(jù)并寫出數(shù)據(jù),客戶端發(fā)送數(shù)據(jù)并接收數(shù)據(jù),不行嗎?
2016-11-25
舉報
2017-02-08
首先你要了解這兩個方法是做什么用的。
調(diào)用Socket.shutdownInput( )后, 禁用此套接字的輸入流,發(fā)送到套接字的輸入流端的任何數(shù)據(jù)都將被確認(rèn)然后被靜默丟棄。任何想從該套接字的輸入流讀取數(shù)據(jù)的操作都將返回-1;
?? 調(diào)用Socket.shutdownOutput()后,禁用此套接字的輸出流,對于 TCP 套接字,任何以前寫入的數(shù)據(jù)都將被發(fā)送,并且后跟 TCP 的正常連接終止序列(即-1),之后,從另一端TCP套接字的輸入流中讀取數(shù)據(jù)時,如果到達輸入流末尾而不再有數(shù)據(jù)可用,則返回 -1。
就是說你沒有調(diào)用shutdownOutput時,相當(dāng)于沒有跟服務(wù)器說“我已經(jīng)說完啦,你可以說了”。那么服務(wù)器呢就覺得“哦,客戶端還沒說完,我要等它說完,要有禮貌”然后服務(wù)器就一直等,就阻塞了。他就不會給客戶端發(fā)送消息“welcome”。
2016-11-29
我感覺你說的不是太對。。。能不能詳細一點,估計我理解的有偏差。
2016-11-25
通道關(guān)閉, 數(shù)據(jù)存在于通道中,未進行輸出