Connection reset
我的代碼如下:
package regist;
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.ServerSocket;
import java.net.Socket;
/*
?* 基于TCP協(xié)議的Scoket通信,實現(xiàn)用戶登錄
?* 服務器端(先啟動)
?*/
public class Server {
public static void main(String[] args){
try {
//1 創(chuàng)建一個服務器Scoket,即ServerScoket,綁定端口,并監(jiān)聽該端口
ServerSocket severScoket=new ServerSocket(6666);
//2 調(diào)用方法accept()開始監(jiān)聽,等待客戶端的鏈接
System.out.println("***服務器即將啟動,等待客戶端連接");
Socket scoket=severScoket.accept();
//3 獲取輸入流,用來獲取客戶端信息
InputStream is=scoket.getInputStream();//字節(jié)輸入流
InputStreamReader isr=new InputStreamReader(is);//將字節(jié)流轉(zhuǎn)化(包裝)為字符流
BufferedReader br=new BufferedReader(isr);//為輸入流添加緩沖?
String info=null;
while((info=br.readLine())!=null){
System.out.println("我是服務器,客戶端說:"+info);
}
scoket.shutdownInput();//關(guān)閉輸入流
//4.獲取輸出流,響應客戶端的請求
OutputStream os=scoket.getOutputStream();
PrintWriter pw=new PrintWriter(os);//包裝為打印流
pw.write("歡迎您");
pw.flush();//調(diào)用flush()方法將緩沖輸出
//5關(guān)閉資源
pw.close();
os.close();
br.close();
isr.close();
is.close();
scoket.close();
severScoket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
客戶端:
package regist;
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 {
//1 創(chuàng)建服務器Socket,指定服務器地址和端口號
Socket socket=new Socket("localhost",6666);
//2.獲取輸出流,向服務器端發(fā)送信息
OutputStream os=socket.getOutputStream();//獲取了字節(jié)輸出流
PrintWriter pw=new PrintWriter(os);//將輸出流包裝為打印流
pw.write("用戶名:admin;密碼:123");
pw.flush();
socket.shutdownInput();//關(guān)閉流
//3 獲取輸入流,并讀取服務器端的響應信息
InputStream is=socket.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String info=null;
while((info=br.readLine())!=null){
System.out.println("我是客戶端,服務器說:"+info);
}
//4.關(guān)閉資源
br.close();
is.close();
pw.close();
os.close();
socket.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
運行之后:
在我輸入時,我發(fā)現(xiàn)有已經(jīng)有人出現(xiàn)過這樣的問題,我對了一下建議,可還是沒發(fā)現(xiàn)我錯在哪里,所以請幫我看一下
2016-06-04
客戶端
pw.flush();
socket.shutdownInput();//關(guān)閉流
是不是應該關(guān)閉輸出流
socket.shutdownOutput();//關(guān)閉流