為何沒反應(yīng)呢?
package?com.test; /* ?*?server類 ?*/ 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.net.ServerSocket; import?java.net.Socket; public?class?Server?{ public?static?void?main(String[]?args)?{ try?{ //創(chuàng)建ServerSocket對象 ServerSocket?server=new?ServerSocket(8888); System.out.println("服務(wù)器等待連接中....."); //調(diào)用accept()開始監(jiān)聽,等待客戶端的連接 Socket?s=server.accept(); //獲得輸入流,來讀取客戶信息 InputStream?in=s.getInputStream();//字節(jié)輸入流 InputStreamReader?isr=new?InputStreamReader(in);//將字節(jié)流包裝為字符流 BufferedReader?br=new?BufferedReader(isr);//為輸入流添加緩沖 String?info=null; while((info=br.readLine())!=null){ System.out.println("******服務(wù)器開始讀取*****"); System.out.println("我是服務(wù)器,客戶端說:"+info); info=br.readLine(); } //添加輸出流,為客戶端輸出信息 OutputStream?out=s.getOutputStream(); BufferedWriter?bw=new?BufferedWriter(new?OutputStreamWriter(out)); bw.write("歡迎您?。?!"); bw.flush(); //關(guān)閉資源 out.close(); bw.close(); server.close(); in.close(); isr.close(); br.close(); }?catch?(IOException?e)?{ //?TODO?Auto-generated?catch?block e.printStackTrace(); } } }
package?com.test; /* ?*?client類 ?*/ import?java.io.BufferedReader; import?java.io.IOException; import?java.io.InputStream; import?java.io.InputStreamReader; import?java.io.OutputStream; import?java.io.PrintWriter; import?java.net.Socket; import?java.net.UnknownHostException; public?class?Client?{ public?static?void?main(String[]?args)?{ try?{ //創(chuàng)建Socket對象 Socket?socket=new?Socket("localhost",?8888); //獲取輸出流? OutputStream?out=socket.getOutputStream(); PrintWriter?pw=new?PrintWriter(out); pw.write("ueser:tom;key:123"); pw.flush(); //添加輸出流 InputStream?in=socket.getInputStream(); BufferedReader?br=new?BufferedReader(new?InputStreamReader(in)); String?info=null; while((info=br.readLine())!=null){ System.out.println("我是客戶端,服務(wù)器端說:"+info); } //關(guān)閉資源 in.close(); br.close(); socket.close(); out.close(); pw.close(); }?catch?(UnknownHostException?e)?{ //?TODO?Auto-generated?catch?block e.printStackTrace(); }?catch?(IOException?e)?{ //?TODO?Auto-generated?catch?block e.printStackTrace(); } } }
client控制臺就顯示:服務(wù)器等待連接中.....
server控制臺沒反應(yīng)
2016-07-02
解決辦法:
在Server類的第33、34行像講師一樣插入這句代碼:
s.shutdownInput();
在Server類的原第38、39行像講師一樣插入這句代碼:
s.shutdownOutput();
在Client類的第24、25行像講師一樣插入這句代碼:
socket.shutdownOutput();
在Client類的原第31、32行像講師一樣插入這句代碼:
socket.shutdownInput();
p.s. 建議把Server類的第30行代碼放到28或29行之前。