当前位置: 首页 > article >正文

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

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

  • 前言
  • Launcher

前言

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();
    }
}

http://www.kler.cn/a/593989.html

相关文章:

  • AI日报 - 2025年3月21日
  • 使用FastAPI为知识库问答系统前端提供后端功能接口
  • 期货和期权的区别,通俗易懂!
  • ccf3401矩阵重塑(其一)
  • deepseek使用记录24——小灵
  • Spring 事务注解原理
  • [Xilinx]工具篇_Vivado自动安装
  • 计算机网络快速入门
  • 【C#知识点详解】ExcelDataReader介绍
  • 记一次性能调优-20250320
  • 【嵌入式硬件】 天线与距离问题
  • JVM常用概念之压缩引用
  • C语言的setjmp和longjmp:可以作异常处理
  • 【数据分享】2000—2024年我国乡镇的逐月归一化植被指数(NDVI)数据(Shp/Excel格式)
  • 微信小程序面试内容整理-请求优化
  • 经典面试题:C/C++中static关键字的三大核心作用与实战应用
  • 计算机四级 - 数据库原理(操作系统部分)- 第4章「并发与同步」
  • Numpy broadcasting规则
  • 3.20学习总结 java面向对象+string函数
  • New Friends(并查集)