/*
* 基於TCP協議的socket通信,實現用戶登錄
*/
public class ServerMain1 {
public static void main(String[] args) {
try {
//1.創建一個服務器端的Socket,ServerSocket ,指定綁定的端口,並監聽此端口
ServerSocket serverSocket=new ServerSocket(8888);//端口已設置1023以後的端口
//2.調用accept()方法開始監聽,等待客戶端連接
System.out.println("*****服務器即將啓動,等待客戶端的連接*******");
Socket socket=serverSocket.accept();
//3.獲取輸入流,並讀取客戶端信息
InputStream is=socket.getInputStream();
//4.將字節流包裝爲字符流
InputStreamReader isr=new InputStreamReader(is);
//5.爲字符流添加緩衝區
BufferedReader br=new BufferedReader(isr);
String info=null;
while((info=br.readLine())!=null)
{
System.out.println("我是服務器,客戶端說"+info);
}
socket.shutdownInput();//關閉讀取流
OutputStream os=socket.getOutputStream();
PrintWriter pw=new PrintWriter(os);
pw.write("歡迎你的登陸!!!");
pw.flush();//刷新緩存
pw.close();
os.close();
br.close();
isr.close();
is.close();
socket.close();
serverSocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
-----------------------
public class ClientMain1 {
public static void main(String[] args) {
try {
//1.創建客戶端socket,指定服務器端地址和端口
Socket socket=new Socket("localhost",8888);
//2.獲取一個輸出流(寫入),向服務器端發送信息
OutputStream os=socket.getOutputStream();// 字符輸出流
PrintWriter pw=new PrintWriter(os);//將輸入流包裝爲打印流
pw.write("用戶名:admin;密碼:132");
pw.flush();
socket.shutdownOutput();
InputStream is=socket.getInputStream();
//4.將字節流包裝爲字符流
InputStreamReader isr=new InputStreamReader(is);
//5.爲字符流添加緩衝區
BufferedReader br=new BufferedReader(isr);
String info=null;
while((info=br.readLine())!=null)
{
System.out.println("我是客戶端,服務說:"+info);
}
//關閉資源
br.close();
isr.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();
}
}
}
注:(運行實例時,請先運行ServerMain1然後在運行ClientMain1,簡單的實現服務端接受客戶端發送的數據並相應客戶端。運行環境jdk1.6)