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

Java Socket 程式設計入門:Server/Client/Applet 三端完整範例

     編輯:Java 相關知識

經典 TCP Socket 教學範例:Server 監聽 port 5000,發送歡迎訊息;Application Client 與 Applet Client 分別連線接收訊息。展示 ServerSocket、Socket、DataInputStream/DataOutputStream 基礎用法。

1. Server 端

import java.io.*;
import java.net.*;

public class Server {
    public static void main(String[] args) {
        try (ServerSocket server = new ServerSocket(5000)) {
            System.out.println("Server 啟動,等待連線...");
            try (Socket client = server.accept();
                 DataOutputStream out = new DataOutputStream(client.getOutputStream())) {
                System.out.println("Client 連線: " + client.getInetAddress());
                out.writeUTF("Welcome to Server. Bye!");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2. Application Client

import java.io.*;
import java.net.*;

public class Client {
    public static void main(String[] args) {
        String host = (args.length > 0) ? args[0] : "localhost";
        try (Socket socket = new Socket(host, 5000);
             DataInputStream in = new DataInputStream(socket.getInputStream())) {
            String msg = in.readUTF();
            System.out.println("Server 回應: " + msg);
        } catch (IOException e) {
            System.err.println("連線失敗: " + e.getMessage());
        }
    }
}

3. Applet Client(歷史參考,現代瀏覽器已棄用 Applet)

import java.applet.Applet;
import java.awt.Graphics;
import java.io.*;
import java.net.*;

public class AppletClient extends Applet {
    private String info = "連線中...";
    public void init() {
        try (Socket socket = new Socket(getCodeBase().getHost(), 5000);
             DataInputStream in = new DataInputStream(socket.getInputStream())) {
            info = in.readUTF();
        } catch (Exception e) {
            info = "錯誤: " + e.getMessage();
        }
        repaint();
    }
    public void paint(Graphics g) { g.drawString(info, 20, 20); }
}

HTML 引用:<applet code="AppletClient.class" width=200 height=200></applet>

執行步驟

  1. javac Server.java Client.java AppletClient.java
  2. 啟動 Server:java Server
  3. 另開終端啟動 Client:java Client localhost

延伸應用

  • 傳輸可序列化物件:改用 ObjectOutputStream/ObjectInputStream。
  • 多執行緒 Server:accept() 後交給 ExecutorService 處理每個 Client。
  • 心跳/斷線重連:應用層協議加入 Ping/Pong 機制。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved