[心得] 從0開始 1.telnet伺服器
仔細探究 MUD 的本質, 會發現 MUD 其實就是一個『附加遊戲功能的 telnet
聊天室』, 故打造一個 talnet 聊天室就是一切的開始.
用 java 建立 telnet server 可以說是非常的簡單, java 標準程式庫
已經把需要的東西都準備好了, 我們只需要在程式中呼叫 ServerSocket
這個 class, 並使用 ServerSocket 的 accpet() 就可以取得 Socket
也就是與客戶端的連線物件. 接著再呼叫 Socket 的 getInputStream()
與 getOutputStream() 取得 InputStream 與 OutputStream,
就可以使用這兩個 Stream 與客戶端進行純文字的溝通了.
以下就是最基本的 echo server.
// ✂--------------請沿虛線剪下--------------
package service;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
public class ChatServer {
static final int PORT = 4000;
public static void main(String[] args) {
try (ServerSocket server = new ServerSocket(PORT)) {
System.out.println("Server is listening port: " + PORT);
while (true) {
Socket 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);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
// ✂--------------請沿虛線剪下--------------
以上的程式如果編譯並執行的話, 試著用任何一個 talnet 連線軟體連線
到 127.0.0.1:4000 就會看到以下畫面.
https://imgur.com/LyESEbU

server 會像是鸚鵡學舌一樣把你輸入的文字原封不動的還給你, 不過目前
我們的 server 只能服務一個人, 如果你試圖再開一個連線程式, 會發現
要等第一次的連線結束後第二個連線才能連上, 那是因為我們的 server
目前還不具備多執行緒(multi-thread)的能力, 所以一次只能服務一個連
線. 關於多執行緒的作法, 敬請期待下回連載.
--
╔═◢ ◣═╦╦═════╦═════╗
║ ◤◤◤ ◥ ╠╣飛鳥ももこ╠═╗ ║
║ ▇ ▇ ║╚═════╝ ╚═╦═╣
║ ▌ ● ● ▌ ║╔══════╗╔═╩═╣
║◤ ◥ ︺█◤ ◥╠╣Momoko Asuka╠╝ ║
╚◣◢ ▄▂▄ ◣◢╩╩══════╩════╝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.72.253.40 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/mud/M.1575361960.A.9C9.html
推
12/04 18:30,
5年前
, 1F
12/04 18:30, 1F
筆誤 XD 已修正, 感謝提醒
※ 編輯: gasbomb (211.72.253.40 臺灣), 12/05/2019 12:57:18
mud 近期熱門文章
PTT遊戲區 即時熱門文章
31
50