課程
/后端開發
/Java
/Java Socket應用---通信是這樣練成的
為什么要調用shutdowninput和shutdownoutput方法,不調用的話會沒有數據,為什么啊?快瘋了,求大神給個詳細的解答?還有服務器接收到數據并寫出數據,客戶端發送數據并接收數據,不行嗎?
2016-11-25
源自:Java Socket應用---通信是這樣練成的 3-4
正在回答
首先你要了解這兩個方法是做什么用的。
調用Socket.shutdownInput( )后, 禁用此套接字的輸入流,發送到套接字的輸入流端的任何數據都將被確認然后被靜默丟棄。任何想從該套接字的輸入流讀取數據的操作都將返回-1;
?? 調用Socket.shutdownOutput()后,禁用此套接字的輸出流,對于 TCP 套接字,任何以前寫入的數據都將被發送,并且后跟 TCP 的正常連接終止序列(即-1),之后,從另一端TCP套接字的輸入流中讀取數據時,如果到達輸入流末尾而不再有數據可用,則返回 -1。
就是說你沒有調用shutdownOutput時,相當于沒有跟服務器說“我已經說完啦,你可以說了”。那么服務器呢就覺得“哦,客戶端還沒說完,我要等它說完,要有禮貌”然后服務器就一直等,就阻塞了。他就不會給客戶端發送消息“welcome”。
我感覺你說的不是太對。。。能不能詳細一點,估計我理解的有偏差。
通道關閉, 數據存在于通道中,未進行輸出
舉報
分享的是 Java 中的網絡編程,使用Socket實現網絡聊天通信
2 回答shutdown流的問題
2 回答socket的outputstream不用shutdown嗎?
2 回答關于InetAddress的問題
1 回答關于異常的問題
2 回答關于通訊的問題。
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2017-02-08
首先你要了解這兩個方法是做什么用的。
調用Socket.shutdownInput( )后, 禁用此套接字的輸入流,發送到套接字的輸入流端的任何數據都將被確認然后被靜默丟棄。任何想從該套接字的輸入流讀取數據的操作都將返回-1;
?? 調用Socket.shutdownOutput()后,禁用此套接字的輸出流,對于 TCP 套接字,任何以前寫入的數據都將被發送,并且后跟 TCP 的正常連接終止序列(即-1),之后,從另一端TCP套接字的輸入流中讀取數據時,如果到達輸入流末尾而不再有數據可用,則返回 -1。
就是說你沒有調用shutdownOutput時,相當于沒有跟服務器說“我已經說完啦,你可以說了”。那么服務器呢就覺得“哦,客戶端還沒說完,我要等它說完,要有禮貌”然后服務器就一直等,就阻塞了。他就不會給客戶端發送消息“welcome”。
2016-11-29
我感覺你說的不是太對。。。能不能詳細一點,估計我理解的有偏差。
2016-11-25
通道關閉, 數據存在于通道中,未進行輸出