為何沒反應呢?
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?{
//創建ServerSocket對象
ServerSocket?server=new?ServerSocket(8888);
System.out.println("服務器等待連接中.....");
//調用accept()開始監聽,等待客戶端的連接
Socket?s=server.accept();
//獲得輸入流,來讀取客戶信息
InputStream?in=s.getInputStream();//字節輸入流
InputStreamReader?isr=new?InputStreamReader(in);//將字節流包裝為字符流
BufferedReader?br=new?BufferedReader(isr);//為輸入流添加緩沖
String?info=null;
while((info=br.readLine())!=null){
System.out.println("******服務器開始讀取*****");
System.out.println("我是服務器,客戶端說:"+info);
info=br.readLine();
}
//添加輸出流,為客戶端輸出信息
OutputStream?out=s.getOutputStream();
BufferedWriter?bw=new?BufferedWriter(new?OutputStreamWriter(out));
bw.write("歡迎您?。?!");
bw.flush();
//關閉資源
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?{
//創建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("我是客戶端,服務器端說:"+info);
}
//關閉資源
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控制臺就顯示:服務器等待連接中.....
server控制臺沒反應
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行之前。