zoukankan      html  css  js  c++  java
  • 彻底剖析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;
        }
    }
  • 相关阅读:
    Head of a Gang
    如何实现可以获取最小值的栈?
    多项式函数的极值点与拐点判别及个数公式
    解决Windows10下小娜无法搜索本地应用的问题
    Oracle中常用的语句
    [HTML]在页面中输出空格的几种方式
    [JavaScript]JS中的变量声明与有效域
    JAVA中时间格式转换
    Context initialization failed org.springframework.beans.factory.BeanCreationException
    Spring整合Mybatis SQL语句的输出
  • 原文地址:https://www.cnblogs.com/newlangwen/p/10396493.html
Copyright © 2011-2022 走看看