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

Tom avatar
By Tom
at 2019-12-03T16:32

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╠╝ ║
◣◢◣◢╩╩══════╩════╝

--
Tags: 線上

All Comments

Frederica avatar
By Frederica
at 2019-12-05T20:08
127.0.0.1

從0開始的MUD開發日記 0.前言

Olive avatar
By Olive
at 2019-12-03T16:25
- 序 2009 年, 當年我是一個正在退學邊緣的大學生, 曾經妄想過要自己架 設一個屬於自己的 MUD, 並且妄想著用架設出來的作品當作進入遊戲業界 的敲門磚, 在數個月的嘗試之後以失敗告終. 探究其原因是我當年缺少太 多程式設計相關知識, 光是下載編譯 mudOS, 面對完全不熟悉的 C 語言 co ...

T1宣布成立OW戰隊 將參加明年韓國OC

Madame avatar
By Madame
at 2019-12-03T16:03
新聞來源:https://pse.is/K7Y82 知名電競戰隊 T1 今日透過官方推特宣布,將召募優秀選手與教練,將於明年組織團隊參 加《鬥陣特攻》韓國職業競技賽( Overwatch Contenders Korea )。   《鬥陣特攻》職業競技賽是為了希望前進《鬥陣特攻》職業電競聯賽選手所設計的賽 ...

是因為甚麼退坑的?

Mary avatar
By Mary
at 2019-12-03T15:48
小弟手抖回鍋低端 原本低端蹦蹦跳跳也是玩的很開心 但改版後 1. DPS 奶媽排不到 2. 想說來玩個坦吧 結果發現這是一個 a. 舉盾遊戲 b. 死神特攻 舉盾看隊友玩(射別人盾)就算了 坦克嗎 就是要夠M 別人開開心心蹦蹦跳跳(的射別人盾) 你就是她媽的站好位置卡好盾 如果這樣能 ...

淨化龜龜/死神團

Yuri avatar
By Yuri
at 2019-12-03T15:39
1.伺服器:愛麗沙 2.分流:ch-10 3.團隊主題:淨化龜龜/死神團 4.出團時間:平日晚上,假日下午晚上 5.聯絡人ID:源曦 6.聯絡方式:短訊/好友/站內信/推文/line群 7.隊友資格:缺音樂人才QQ 8.備註:可以長期固定刷的小夥伴~ - ...

來聊聊主力戰艦吧?

Skylar DavisLinda avatar
By Skylar DavisLinda
at 2019-12-03T14:45
大家好 對 是我這個常常在吐大和苦水的海猴 昨天剛爬出了征服者 我想慢慢的爬出所有主力戰艦 目前差美法船了 我想聽聽各位對於自己喜歡的十階主力戰艦的看法 (畢竟這遊戲就是1-9餵屎都還勉強能接受 但是十階絕對不能亂來) 不管是覺得大和太弱了這種跟我一樣的想法 還是覺得其他戰艦更需要buff的 我都想要聽 ...