• 彻底剖析RMI底层源码 、手写轻量级RMI框架


    https://blog.csdn.net/Z0157/article/details/82049975

    User 

    public class User {
        private int age;
    
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
    }

    UserClient

    public class UserClient {
    
        public static void main(String[] args) throws IOException {
            User user = new UserStub();
            int age = user.getAge();
            System.out.println("age="+age);
        }
    }

    UserServer

    public class UserServer extends User  {
    
        public static void main(String[] args) {
            UserServer userServer = new UserServer();
    
            userServer.setAge(18);
            UserSkeleton userSkeleton = new UserSkeleton(userServer);
            userSkeleton.start();
    
        }
    }

    UserSkeleton

    public class UserSkeleton extends Thread{
    
        private UserServer userServer;
    
        public UserSkeleton(UserServer userServer){
            this.userServer = userServer;
        }
        public void run(){
            ServerSocket serverSocket =null;
            try {
                 serverSocket = new ServerSocket(8888);
                Socket socket = serverSocket.accept();
    
                while (socket !=null){
                    ObjectInputStream read = new ObjectInputStream(socket.getInputStream());
                    String method = (String) read.readObject();
                    System.out.println("server get data:"+method);
                    if(method.equals("age")){
                        int age = userServer.getAge();
                        System.out.println("server set data:"+age);
                        ObjectOutputStream outputStream = new ObjectOutputStream(socket.getOutputStream());
                        outputStream.writeInt(age);
                        outputStream.flush();
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }finally {
                if (serverSocket !=null){
                    try {
                        serverSocket.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
    
    
        }
    }

    UserStu

    public class UserStub extends User {
    
        private Socket socket;
    
        public UserStub() throws IOException {
            socket = new Socket("localhost",8888);
        }
    
        public int getAge(){
            try {
                ObjectOutputStream outputStream = new ObjectOutputStream(socket.getOutputStream());
                outputStream.writeObject("age");
                System.out.println("client set data");
                outputStream.flush();
                ObjectInputStream objectInputStream = new ObjectInputStream(socket.getInputStream());
                System.out.println("client read data start");
                int age = objectInputStream.readInt();
                System.out.println("client read data:"+age);
                return  age;
            } catch (IOException e) {
                e.printStackTrace();
            }
            return 0;
        }
    }
  • 相关阅读:
    cookie与session的原理及区别
    jwt原则
    Django rest framework基础 RESTful风格
    vue项目使用整理
    Serializer 字段验证以及序列化
    ModelSerializer 字段验证以及序列化
    Django
    FREE 命令结果完全剖析
    一个一元二次方程求解编程引申的两个知识点(abs和fabs的区别以及浮点数比较相等)
    signed和unsigned之二
  • 原文地址:https://www.cnblogs.com/newlangwen/p/10396493.html
Copyright © 2020-2023  润新知