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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

客戶端為什么關(guān)閉輸入流會(huì)報(bào)錯(cuò)

老師在上面關(guān)閉了socket的輸出流,接下來的接收服務(wù)器響應(yīng)的代碼我發(fā)現(xiàn)沒有關(guān)閉socket的輸入流,于是我加了socket.shuntdownInput程序就會(huì)報(bào)錯(cuò)

http://img1.sycdn.imooc.com//57c4495c000129fb07080501.jpg

package?com.imooc;

import?java.io.BufferedReader;
import?java.io.BufferedWriter;
import?java.io.IOException;
import?java.io.InputStream;
import?java.io.InputStreamReader;
import?java.io.OutputStream;
import?java.io.OutputStreamWriter;
import?java.io.PrintWriter;
import?java.net.Socket;
import?java.net.UnknownHostException;

public?class?Client
{
	public?static?void?main(String[]?args)
	{
		try
		{
			Socket?sk=new?Socket("localhost",8888);
			OutputStream?os=sk.getOutputStream();
			
			PrintWriter?pw=new?PrintWriter(os);
			pw.println("用戶名:admin,密碼:123456");
			pw.flush();//刷新緩存
			
			sk.shutdownOutput();
			
			//創(chuàng)建輸入流,接收服務(wù)端響應(yīng)
			InputStream?is=sk.getInputStream();
			BufferedReader?br=new?BufferedReader(new?InputStreamReader(is));
			String?info=null;
			while((info=br.readLine())!=null){
				System.out.println("我是客戶端,服務(wù)器說:"+info);
			}
			
			br.close();
			is.close();
			sk.shutdownInput();//關(guān)閉socket的輸入流
			
			pw.close();
			os.close();
			sk.close();
			
			
			
		}?catch?(UnknownHostException?e)
		{
			//?TODO?自動(dòng)生成的?catch?塊
			e.printStackTrace();
		}?catch?(IOException?e)
		{
			//?TODO?自動(dòng)生成的?catch?塊
			e.printStackTrace();
		}
	}
}


正在回答

5 回答

我也碰到了這個(gè)問題,是這樣的,你應(yīng)該先關(guān)閉輸入輸出流,然后在關(guān)閉資源,就不會(huì)這樣了,把上面的兩個(gè)資源關(guān)閉放到下面就可以了

0 回復(fù) 有任何疑惑可以回復(fù)我~

我想你跟我犯了同樣的錯(cuò)誤,我也是報(bào)的這個(gè)錯(cuò)誤。然后我發(fā)現(xiàn)客戶端不是關(guān)閉輸入流socket.shutdownInput();,而是關(guān)閉輸出流scoket.shutdownOutput();

因?yàn)?span>先啟動(dòng)服務(wù)器,再啟動(dòng)客戶端,你想想:

  1. 首先服務(wù)器端是建立了socket然后等待接收信息的,信息接收完畢,所以要關(guān)閉輸入流。

  2. 然后客戶端是發(fā)送信息的,信息發(fā)送完畢,所以要關(guān)閉輸出流。

  3. 其次服務(wù)器端的輸出流以及客戶端的輸入流在最后關(guān)閉資源的時(shí)候會(huì)自動(dòng)關(guān)閉的。

1 回復(fù) 有任何疑惑可以回復(fù)我~

?關(guān)閉輸出流時(shí),會(huì)連帶的自動(dòng)把socket也關(guān)了的,所以,你后面再關(guān)閉輸入流時(shí),socket其實(shí)已經(jīng)被關(guān)閉了,估計(jì)會(huì)報(bào) 空指針異常!

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

慕粉客 提問者

如果關(guān)閉輸出流的時(shí)候,Socket被關(guān)閉了,那后面怎么調(diào)用Socket來接受服務(wù)器的響應(yīng)呢。
2016-08-29 回復(fù) 有任何疑惑可以回復(fù)我~
#2

要飛的鳥 回復(fù) 慕粉客 提問者

不要關(guān)閉輸出流 而是在最后整個(gè)關(guān)閉socket即可,關(guān)閉socket就可以輸入出流自動(dòng)關(guān)閉了。
2016-08-30 回復(fù) 有任何疑惑可以回復(fù)我~

你沒有先啟動(dòng)服務(wù)器端

1 回復(fù) 有任何疑惑可以回復(fù)我~
#1

慕粉客 提問者

先啟動(dòng)了服務(wù)器的
2016-08-29 回復(fù) 有任何疑惑可以回復(fù)我~

報(bào)的什么錯(cuò)誤,貼出來

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消

客戶端為什么關(guān)閉輸入流會(huì)報(bào)錯(cuò)

我要回答 關(guān)注問題
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)