Series: Angelia
java
42 lines
· Updated 2026-09-27
EchoClient.java
Angelia/Java/Week_6_7/code/08_chat_protocol/EchoClient.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
/**
* 最小的客戶端:連上伺服器,送出一段固定的對話,印出伺服器的每一則回應。
*
* 執行(先啟動 EchoServer):java EchoClient localhost 5555
*/
public class EchoClient {
public static void main(String[] args) throws IOException {
String host = args.length > 0 ? args[0] : "localhost";
int port = args.length > 1 ? Integer.parseInt(args[1]) : 5555;
try (Socket socket = new Socket(host, port); // 主動連到伺服器
BufferedReader in = new BufferedReader(
new InputStreamReader(socket.getInputStream(), StandardCharsets.UTF_8));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true, StandardCharsets.UTF_8)) {
String[] script = {
"SAY general hi", // 還沒登入 → ERR 401
"LOGIN angelia", // → OK welcome angelia
"JOIN general", // → OK joined general
"SAY general hello world", // → MSG general angelia hello world
"DANCE", // 未知指令 → ERR 400
"QUIT" // → BYE
};
for (String line : script) {
System.out.println(">>> " + line);
out.println(line); // 送出一行
String reply = in.readLine(); // 等一行回應
System.out.println("<<< " + reply);
ChatMessage parsed = ChatMessage.parse(reply); // 客戶端也用同一份 parser
System.out.println(" 解析結果:" + parsed);
}
}
}
}
Related articles
Angelia
haskell
Updated 2026-02-03
Adding.hs
Adding.hs — haskell source code from the Angelia learning materials (Angelia/Haskell/Adding.hs).
Read article →
Angelia
haskell
Updated 2026-02-03
Area.hs
Area.hs — haskell source code from the Angelia learning materials (Angelia/Haskell/Area.hs).
Read article →
Angelia
haskell
Updated 2026-02-03
Chess.hs
Chess.hs — haskell source code from the Angelia learning materials (Angelia/Haskell/Chess.hs).
Read article →
Angelia
haskell
Updated 2026-02-03
ChessGraphics.hs
ChessGraphics.hs — haskell source code from the Angelia learning materials (Angelia/Haskell/ChessGraphics.hs).
Read article →
Angelia
haskell
Updated 2026-02-03
Examples.hs
Examples.hs — haskell source code from the Angelia learning materials (Angelia/Haskell/Examples.hs).
Read article →
Angelia
haskell
Updated 2026-02-03
Fibonacci.hs
Fibonacci.hs — haskell source code from the Angelia learning materials (Angelia/Haskell/Fibonacci.hs).
Read article →