Java 作為網路程式語言,在 Applet 中透過 java.applet.AudioClip 輕鬆播放聲音。但若在一般 Application(獨立應用程式)中想發出提示音,卻無法直接使用 AudioClip,因其僅限於 Applet 環境。本文介紹如何在 Application 中利用 java.awt.Toolkit.beep() 觸發系統喇叭發聲,並附上完整的 Client/Server 範例程式碼。
AudioClip 位於 java.applet 套件,專為 Applet 設計。play() 方法僅在 Applet 執行環境中可被呼叫,Application 中無法運作。java.awt.Toolkit 為抽象類別,提供 getDefaultToolkit() 取得具體實作,再呼叫 beep() 即可觸發系統喇叭發出提示音。
Toolkit.getDefaultToolkit().beep();
import java.util.*;
import java.io.*;
import java.net.*;
import java.awt.*;
public class ServerT {
public static void main(String[] args) {
Server server = new Server(8001);
// ... 處理客戶端連線與訊息收發 ...
}
}
class Server {
private ServerSocket server;
private Socket socket;
public DataInputStream in;
public PrintStream out;
public Server(int port) {
try {
server = new ServerSocket(port);
System.out.println("Server started on port " + port);
socket = server.accept(); // 等待客戶端連線
// 連線成功時發出 260 次提示音
for (int i = 0; i < 260; i++) {
Toolkit.getDefaultToolkit().beep();
}
System.out.println("Server is ready!");
in = new DataInputStream(socket.getInputStream());
out = new PrintStream(socket.getOutputStream());
out.println("We connect in " + new Date());
} catch (IOException e) {
System.out.println("Server failed: " + e);
}
}
}
import java.util.*;
import java.io.*;
import java.net.*;
public class ClientT {
public static void main(String[] args) {
// 請將 IP 改為實際 Server IP
Client client = new Client("127.0.0.1", 8001);
// ... 訊息收發迴圈 ...
}
}
class Client {
public DataInputStream in;
public PrintStream out;
private Socket client;
public Client(String host, int port) {
try {
client = new Socket(host, port);
out = new PrintStream(client.getOutputStream());
in = new DataInputStream(client.getInputStream());
System.out.println("Client connected to " + client);
} catch (IOException e) {
System.out.println("Connection failed: " + e);
System.exit(1);
}
}
}
ServerT,等待連線。ClientT 中的 IP 位址為 Server 實際 IP(本機測試可用 127.0.0.1)。ClientT,Server 端將收到連線並發出連續提示音。beep() 僅觸發系統預設提示音,無法自訂音效檔案。javax.sound.sampled 套件(Java Sound API),支援 Application 環境。beep() 可能造成使用者不適,建議僅於關鍵事件(如新連線、錯誤警示)使用。在 Java Application 中加入聲音提示並不複雜,善用 Toolkit.beep() 即可滿足大多數簡單提醒需求。若需要豐富音效播放,請進一步探索 Java Sound API。