首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java 在 Client/Server 網路架構中的應用模式與實現

     編輯:Java 程式設計入門

一、Java 網路應用模型:Browser/Server 三層架構

Java 應用環境本質是 Client/Server,更精確說是 Browser/Server (B/S) 三層模型:

傳統 C/S 二層Java B/S 三層
客戶端含業務邏輯 + 資料存取客戶端 = 瀏覽器(薄客戶端,僅顯示)
資料庫伺服器應用伺服器 + 資料庫伺服器分離

優勢:運算下沉客戶端(Applet/Web Start)、動態擴充性強、部署維護集中化。

二、Java 網路類庫支援體系

核心包:java.net。擴展子包對應協議:

子包協議/功能
java.net基礎網路:Socket、URL、InetAddress、Datagram
java.net.ftpFTP 協議處理
java.net.www.contentWWW 內容處理
java.net.www.htmlHTML 解析/渲染支援
java.net.www.httpHTTP 協議實現

動態協議擴充機制允許運行時註冊新協議處理器。

三、Socket 基礎通信模式:請求-應答

基於連接的可靠傳輸(TCP):

  1. 定義應用層協議(請求/回應格式)
  2. 建立 Socket 連接
  3. 雙向可靠傳輸數據
  4. 關閉連接

服務器端標準流程

ServerSocket server = new ServerSocket(PORT);
while (true) {
    Socket client = server.accept();      // 阻塞等待連接
    new Thread(() -> handle(client)).start(); // 每連接一執行緒
}

void handle(Socket client) {
    try (BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
         PrintWriter out = new PrintWriter(client.getOutputStream(), true)) {
        String request = in.readLine();
        String response = process(request); // 如:反轉字串
        out.println(response);
    } catch (IOException e) { /* log */ }
}

客戶端標準流程

Socket socket = new Socket("serverHost", PORT);
try (PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
     BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()))) {
    out.println("Hello Server");
    String response = in.readLine();
    System.out.println("Server: " + response);
}

四、關鍵設計要點

  • ServerSocket 負責監聽: accept() 返回新 Socket 處理具體連接,主迴圈持續監聽新連接。
  • 執行緒模型: 每連接一執行緒(Thread-per-Connection)→ 連接數大時切換開銷大;現代改用 NIO (Non-blocking I/O) + 選擇器 或 線程池。
  • 協議設計: 明確邊界(定長、分隔符、長度前綴)、編碼(UTF-8)、心跳/超時、錯誤碼、版本協商。
  • 資源管理: try-with-resources 確保流與 Socket 關閉,防止檔案描述符洩漏。
  • 安全性: SSL/TLS (SSLSocketFactory)、輸入驗證、速率限制、認證授權。

五、現代化演進

時代技術棧特徵
J2EE 早期Servlet + JSP + JavaBean + RMI/IIOP重量級 EJB、應用伺服器綁定
Spring 時代Spring MVC + Spring Remoting (RMI/Hessian/HttpInvoker) + JMSPOJO 開發、聲明式事務、輕量容器
微服務時代Spring Boot + REST/GraphQL/gRPC + Netflix OSS / Spring Cloud容器化、服務發現、熔斷、配置中心、分布式追蹤
雲原生時代Kubernetes + Istio/Linkerd + Knative + GraalVM Native ImageServerless、自動擴縮容、多雲部署、啟動毫秒級

總結

Java 從 java.net.Socket 起步,構建了完整的網路生態:URL/URLConnection → Servlet API → RMI → JMS → Web Services → REST → gRPC → Reactive Streams。理解「請求-應答」基礎模型與 ServerSocket/Socket 交互本質,是掌握所有上層框架的基石。現代開發雖少直接操作 Socket,但網路分層、協議設計、併發模型、資源管理、可觀測性等核心能力始終貫穿技術演進全程。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved