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

Java 網絡編程入門:Socket 實現客戶端與服務端通信

     編輯:Java 綜合教學

Java 網絡編程入門:Socket 實現客戶端與服務端通信

Socket = IP + 端口,是網絡通信的端點。QQ、MSN 等即時通訊底層均基於 Socket。本文演示最簡單的單向文本傳輸。

服務端代碼

package com.socket.demo;
import java.io.*;
import java.net.*;

public class Server {
    public static void main(String[] args) {
        try {
            ServerSocket serverSocket = new ServerSocket(8888);
            System.out.println("----------------服務端運行,開始監聽請求----------------");
            Socket socket = serverSocket.accept(); // 阻塞等待連接
            InputStream is = socket.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            String info;
            while ((info = br.readLine()) != null) {
                System.out.println("我是服務器端,客戶端請求為:" + info);
            }
            // 關閉資源
            socket.shutdownInput();
            br.close(); is.close(); socket.close(); serverSocket.close();
        } catch (Exception e) { e.printStackTrace(); }
    }
}

客戶端代碼

package com.socket.demo;
import java.io.*;
import java.net.*;

public class Client {
    public static void main(String[] args) {
        try {
            Socket socket = new Socket("127.0.0.1", 8888);
            OutputStream os = socket.getOutputStream();
            PrintWriter pw = new PrintWriter(os);
            pw.write("服務器端你好,我是客戶端。");
            pw.flush();
            pw.close(); os.close(); socket.close();
        } catch (Exception e) { e.printStackTrace(); }
    }
}

運行流程

  1. 先啟動 Server,控制台顯示監聽提示。
  2. 再啟動 Client,發送一行文本。
  3. Server 接收並打印客戶端消息。

關鍵點提示

  • ServerSocket.accept() 阻塞直到有連接。
  • 輸入流需包裝 BufferedReader 按行讀取。
  • PrintWriter.flush() 確保數據發送。
  • 資源關閉順序:外層流 → 內層流 → Socket → ServerSocket。
  • 生產環境需考慮多線程並發、心跳檢測、協議設計等。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved