1 package demo11; 2 3 import java.io.BufferedReader; 4 import java.io.IOException; 5 import java.io.InputStream; 6 import java.io.InputStreamReader; 7 import java.io.OutputStream; 8 import java.net.Socket; 9 10 /** 11 * 模擬用戶登陸的功能,客戶端發送登陸信息請求,服務器接收請求並回應 12 * @author BCh_Chen 13 * 14 */ 15 public class LoginClient { 16 public static void main(String[] args) { 17 System.out.println("客戶端啓動!"); 18 try { 19 //發送請求到服務器 20 //建立一個客戶端的Socket 21 Socket socket=new Socket("localhost",8888); 22 //經過輸出流發送請求 23 String info="用戶名:Tom,密碼:123456"; 24 //將字符串打散爲字節數組 25 byte[] infos=info.getBytes(); 26 OutputStream os=socket.getOutputStream(); 27 os.write(infos); 28 29 socket.shutdownOutput(); 30 31 //接收服務器迴應 32 InputStream is=socket.getInputStream(); 33 BufferedReader br=new BufferedReader(new InputStreamReader(is)); 34 String reply; 35 while((reply=br.readLine())!=null) { 36 System.out.println("服務器信息:"+reply); 37 } 38 39 //釋放相應資源 40 br.close(); 41 is.close(); 42 os.close(); 43 socket.close(); 44 } catch (IOException e) { 45 e.printStackTrace(); 46 } 47 } 48 }
1 package demo11; 2 3 import java.io.BufferedReader; 4 import java.io.IOException; 5 import java.io.InputStream; 6 import java.io.InputStreamReader; 7 import java.io.OutputStream; 8 import java.net.ServerSocket; 9 import java.net.Socket; 10 11 public class LoginServer { 12 public static void main(String[] args) { 13 System.out.println("服務器啓動!"); 14 try { 15 //接收客戶端請求 16 //建立一個Socket 17 ServerSocket serverSocket=new ServerSocket(8888); 18 //使用accept()偵聽並接收到此ServerSocket的鏈接 19 Socket socket=serverSocket.accept(); 20 //得到輸入流,得到用戶的請求 21 InputStream is=socket.getInputStream(); 22 BufferedReader br=new BufferedReader(new InputStreamReader(is)); 23 String info; 24 while((info=br.readLine())!=null) { 25 System.out.println("客戶端信息:"+info); 26 } 27 28 29 //給客戶端迴應信息 30 String reply="登陸成功!"; 31 byte[] replys=reply.getBytes(); 32 OutputStream os=socket.getOutputStream(); 33 os.write(replys); 34 35 //釋放相應資源 36 os.close(); 37 br.close(); 38 is.close(); 39 socket.close(); 40 } catch (IOException e) { 41 e.printStackTrace(); 42 } 43 } 44 }
啓動順序是先啓動服務器,再啓動客戶端。java