【MyDB】7-客户端服务端通信之3-Client的实现

【MyDB】7-客户端服务端通信之3-Client的实现

前言

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();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值