【Java框架】RMI:客户端

本文探讨了RMI(Remote Method Invocation)中客户端如何通过建立连接、序列化参数并发送请求,以及服务端如何接收并解析请求,处理异常和返回响应的过程。重点介绍了服务请求的编码和响应的捕获机制。
摘要由CSDN通过智能技术生成

本篇主要完成客户端与服务器通信,请求发送,响应处理。当客户端调用的方法,被连接后,就体处理由该类完成。

1.服务请求

public Object inovker(Method method, Object[] args) {
   try {
       socket = new Socket(ip,port);
       DataInputStream dataInputStream = new DataInputStream(socket.getInputStream());
       DataOutputStream outputStream = new DataOutputStream(socket.getOutputStream());
       int hashCode = method.toString().hashCode();
       ArgumentMaker argumentMaker = new ArgumentMaker();
       if (args != null) {
           for (int i = 0; i < args.length; i++) {
               argumentMaker.addArgument("arg" + i, args[i]);
           }
       }
       outputStream.writeUTF(hashCode + "&&" + argumentMaker.toString());
       return getResponse(method,dataInputStream);
   } catch (IOException e) {
       e.printStackTrace();
   }
   return null;
}

拦截到方法和参数,这里首先根据套接字,建立输入输出流,然后准备请求方法和请求参数。请求方法采用hashcode ,为了提高服务端解析效率。请求参数序列化,argumentMaker 封装了JSON工具。当准备完后,将其发送给服务端。

3.响应侦听

private Object getResponse(Method method, DataInputStream dataInputStream) {
    try {
        String res = dataInputStream.readUTF();
        if (res.contains("ERROR")) {
            throw new RuntimeException(method + " 执行异常");
        }
        return ArgumentMaker.fromJson(res, method.getGenericReturnType());
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;

}

发送完请求后,立即侦听远端响应。响应首先判断是否执行异常,若异常,则抛异常,否则根据方法返回类型,解析参数。

RMI
RMI:代理机制
RMI:底层通信
RMI:请求处理
RMI:请求映射

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值