1. 程式人生 > >ServerSocket和Socket建立通訊(客戶端傳送訊息伺服器接收並返回到客戶端接收輸出)

ServerSocket和Socket建立通訊(客戶端傳送訊息伺服器接收並返回到客戶端接收輸出)

需求:客戶端傳送訊息到伺服器,伺服器接收到訊息並讀取輸出,然後寫出到客戶端客戶端接收到輸出。

1、建立伺服器端

     |-伺服器建立通訊ServerSocket

     |-伺服器建立Socket接收客戶端連線

     |-建立IO輸入流讀取客戶端傳送的資料

     |-建立IO輸出流向客戶端傳送資料訊息

2、建立客戶端

     |-建立Socket通訊,設定通訊伺服器的IP和Port

     |-建立IO輸出流向伺服器傳送資料訊息

     |-建立IO輸入流讀取伺服器傳送來的資料訊息

整個流程就是這樣。

伺服器端:

  1. package server.cotrol;  
  2. import
     java.io.BufferedReader;  
  3. import java.io.BufferedWriter;  
  4. import java.io.IOException;  
  5. import java.io.InputStreamReader;  
  6. import java.io.OutputStreamWriter;  
  7. import java.net.ServerSocket;  
  8. import java.net.Socket;  
  9. publicclass Server02 {  
  10.     publicstaticvoid main(String[] args) {  
  11.         try
     {  
  12.             ServerSocket ss = new ServerSocket(8888);  
  13.             System.out.println("啟動伺服器....");  
  14.             Socket s = ss.accept();  
  15.             System.out.println("客戶端:"+s.getInetAddress().getLocalHost()+"已連線到伺服器");  
  16.             BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));  
  17.             //讀取客戶端傳送來的訊息
  18.             String mess = br.readLine();  
  19.             System.out.println("客戶端:"+mess);  
  20.             BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));  
  21.             bw.write(mess+"\n");  
  22.             bw.flush();  
  23.         } catch (IOException e) {  
  24.             e.printStackTrace();  
  25.         }  
  26.     }  
  27. }  
客戶端:
  1. package client.cotrol;  
  2. import java.io.BufferedReader;  
  3. import java.io.BufferedWriter;  
  4. import java.io.IOException;  
  5. import java.io.InputStream;  
  6. import java.io.InputStreamReader;  
  7. import java.io.OutputStream;  
  8. import java.io.OutputStreamWriter;  
  9. import java.net.Socket;  
  10. import java.net.UnknownHostException;  
  11. publicclass Client02 {  
  12.     publicstaticvoid main(String[] args) {  
  13.         try {  
  14.             Socket s = new Socket("127.0.0.1",8888);  
  15.             //構建IO
  16.             InputStream is = s.getInputStream();  
  17.             OutputStream os = s.getOutputStream();  
  18.             BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));  
  19.             //向伺服器端傳送一條訊息
  20.             bw.write("測試客戶端和伺服器通訊,伺服器接收到訊息返回到客戶端\n");  
  21.             bw.flush();  
  22.             //讀取伺服器返回的訊息
  23.             BufferedReader br = new BufferedReader(new InputStreamReader(is));  
  24.             String mess = br.readLine();  
  25.             System.out.println("伺服器:"+mess);  
  26.         } catch (UnknownHostException e) {  
  27.             e.printStackTrace();  
  28.         } catch (IOException e) {  
  29.             e.printStackTrace();  
  30.         }  
  31.     }  
  32. }