創建服務器端serverSocket
1 import java.io.BufferedReader; 2 import java.io.IOException; 3 import java.io.InputStream; 4 import java.io.InputStreamReader; 5 import java.io.OutputStream; 6 import java.io.PrintWriter; 7 import java.net.ServerSocket; 8 import java.net.Socket; 9 10 /** 11 * 服務端 12 * @author Administrator 13 * 14 */ 15 public class Server { 16 17 public static void main(String[] args) throws IOException { 18 //創建一個服務器端socket,指定綁定的端口號,並監聽此端口 19 ServerSocket serverSocket = new ServerSocket(8888); 20 //調用accept()方法開始監聽,等待客戶端的連接 21 System.out.println("**********服務器即將啟動,等待客戶端的連接*************"); 22 Socket socket = serverSocket.accept(); 23 //獲取輸入流,並讀取客戶端信息 24 InputStream inp = socket.getInputStream(); 25 //把字節流轉換成字符流 26 InputStreamReader isr = new InputStreamReader(inp); 27 //為字符流增加緩沖區 28 BufferedReader bfr = new BufferedReader(isr); 29 String info = null; 30 while((info=bfr.readLine())!=null){//循環讀取數據 31 System.out.println("我是服務器,客戶端說:"+info); 32 } 33 socket.shutdownInput();//關閉輸入流 34 //向客戶端傳遞的信息 35 OutputStream ots = socket.getOutputStream(); 36 PrintWriter pw = new PrintWriter(ots); 37 pw.write("歡迎登陸"); 38 pw.flush(); 39 40 //關閉資源 41 pw.close(); 42 ots.close(); 43 bfr.close(); 44 isr.close(); 45 inp.close(); 46 socket.close(); 47 serverSocket.close(); 48 49 } 50 51 }
創建客戶端socket
1 import java.io.BufferedReader; 2 import java.io.IOException; 3 import java.io.InputStream; 4 import java.io.InputStreamReader; 5 import java.io.OutputStream; 6 import java.io.PrintWriter; 7 import java.net.Socket; 8 import java.net.UnknownHostException; 9 10 /** 11 * 客戶端 12 * @author Administrator 13 * 14 */ 15 public class Client { 16 17 public static void main(String[] args) { 18 try { 19 //創建一個客戶端socket 20 Socket socket = new Socket("localhost",8888); 21 //向服務器端傳遞信息 22 OutputStream ots = socket.getOutputStream(); 23 PrintWriter pw = new PrintWriter(ots); 24 pw.write("用戶名:admin;密碼:123"); 25 pw.flush(); 26 //關閉輸出流 27 socket.shutdownOutput(); 28 //獲取服務器端傳遞的數據 29 InputStream is = socket.getInputStream(); 30 InputStreamReader isr = new InputStreamReader(is); 31 BufferedReader br = new BufferedReader(isr); 32 String info = null; 33 while((info=br.readLine())!=null){ 34 System.out.println("我是客戶端,服務器說:"+info); 35 } 36 //關閉資源 37 br.close(); 38 isr.close(); 39 is.close(); 40 pw.close(); 41 ots.close(); 42 socket.close(); 43 } catch (UnknownHostException e) { 44 e.printStackTrace(); 45 } catch (IOException e) { 46 e.printStackTrace(); 47 } 48 } 49 50 }
先啟動服務器端,再啟動客戶端
服務器端打印結果為
**********服務器即將啟動,等待客戶端的連接*************
我是服務器,客戶端說:用戶名:admin;密碼:123
客戶端打印結果
我是客戶端,服務器說:歡迎登陸