Java 實例 - ServerSocket 和 Socket 通信實例

Java 實例 Java 實例

以下實例演示了如何實現客戶端發送消息到伺服器,伺服器接收到消息並讀取輸出,然後寫出到客戶端客戶端接收到輸出。

1、建立伺服器端

  • 伺服器建立通信ServerSocket
  • 伺服器建立Socket接收客戶端連接
  • 建立IO輸入流讀取客戶端發送的數據
  • 建立IO輸出流向客戶端發送數據消息

伺服器端代碼:

Server.java 檔

import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.ServerSocket; import java.net.Socket; public class Server { public static void main(String[] args) { try { ServerSocket ss = new ServerSocket(8888); System.out.println("啟動伺服器...."); Socket s = ss.accept(); System.out.println("客戶端:"+s.getInetAddress().getLocalHost()+"已連接到伺服器"); BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream())); //讀取客戶端發送來的消息 String mess = br.readLine(); System.out.println("客戶端:"+mess); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); bw.write(mess+"\n"); bw.flush(); } catch (IOException e) { e.printStackTrace(); } } }

以上代碼運行輸出結果為:

啟動伺服器....

2、建立客戶端

  • 創建Socket通信,設置通信伺服器的IP和Port
  • 建立IO輸出流向伺服器發送數據消息
  • 建立IO輸入流讀取伺服器發送來的數據消息

客戶端代碼:

Client.java 檔

import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.net.Socket; import java.net.UnknownHostException; public class Client { public static void main(String[] args) { try { Socket s = new Socket("127.0.0.1",8888); //構建IO InputStream is = s.getInputStream(); OutputStream os = s.getOutputStream(); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os)); //向伺服器端發送一條消息 bw.write("測試客戶端和服務器通信,伺服器接收到消息返回到客戶端\n"); bw.flush(); //讀取伺服器返回的消息 BufferedReader br = new BufferedReader(new InputStreamReader(is)); String mess = br.readLine(); System.out.println("伺服器:"+mess); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }

以上代碼運行輸出結果為:

伺服器:測試客戶端和服務器通信,伺服器接收到消息返回到客戶端

Java 實例 Java 實例