作者gasbomb (虚空雷神兽)
看板mud
标题[心得] 从0开始 1.telnet伺服器
时间Tue Dec 3 16:32:37 2019
仔细探究 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://webptt.com/cn.aspx?n=bbs/mud/M.1575361960.A.9C9.html
1F:推 neca : 127.0.0.1 123.51.179.67 12/04 18:30
笔误 XD 已修正, 感谢提醒
※ 编辑: gasbomb (211.72.253.40 台湾), 12/05/2019 12:57:18