從0開始 1.telnet伺服器 - MUD Game

Table of Contents

仔細探究 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╠╝ ║
◣◢◣◢╩╩══════╩════╝

--

All Comments

Frederica avatarFrederica2019-12-05
127.0.0.1