前言
Client的实现
Client类中实现了execute,核心在于接收字节数组并封装成为Package,之后通过RoundTrip类向服务器发送消息,返回服务端返回的Package中的Data
RoundTripper类:向Server发送请求,并接收server的响应
Shell则接收命令行传来的命令,通过调用Clent中的execute,让后端执行命令并得到返回的结果。
Launcher:客户端的启动入口,启动Shell并调用shell的run方法,监听命令行输入的命令
客户端连接服务器的过程,也是背板。客户端有一个简单的 Shell,实际上只是读入用户的输入,并调用 Client.execute()。
public byte[] execute(byte[] stat) throws Exception {
Package pkg = new Package(stat, null);
Package resPkg = rt.roundTrip(pkg);
if(resPkg.getErr() != null) {
throw resPkg.getErr();
}
return resPkg.getData();
}
RoundTripper 类实际上实现了单次收发动作:
public Package roundTrip(Package pkg) throws Exception {
packager.send(pkg);
return packager.receive();
}
Launcher
最后附上客户端的启动入口,很简单,把 Shell run 起来即可:
public class Launcher {
public static void main(String[] args) throws UnknownHostException, IOException {
Socket socket = new Socket("127.0.0.1", 9999);
Encoder e = new Encoder();
Transporter t = new Transporter(socket);
Packager packager = new Packager(t, e);
Client client = new Client(packager);
Shell shell = new Shell(client);
shell.run();
}
}