今天我們要來正式進入 multi-thread (多執行緒)的部分了
觀察之前的程式片段可以發現到有兩個 while 迴圈
一個負責建立連線, 另一個負責 echo
// 建立連線的迴圈
while (true) {
socket = server.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
PrintStream out = new PrintStream(socket.getOutputStream());
out.println("歡迎來到 telnet echo server!");
// 負責與使用者互動的迴圈
String input;
while ((input = in.readLine()) != null) {
if ("quit".equalsIgnoreCase(input)) {
out.println("Bye! 歡迎下次再來");
socket.close();
break;
}
out.println("Echo: " + input);
}
}
所以我們把負責與使用者互動的部分程式抽離出來
建立一個新的 Player class, 讓原本的 ChatServer 專心處理連線就好
// Player.class
// ✂