zoukankan      html  css  js  c++  java
  • JGroups应用

    1.jgroups下载地址:

    http://jaist.dl.sourceforge.net/project/javagroups/JGroups/3.3.0.CR2/jgroups-3.3.0.CR2.jar

    2.源码示例下载

    https://codeload.github.com/belaban/JGroups/zip/master

    3.jgroups简介

    JGroups是一个可靠的组间通讯工具,进程可以加入一个通讯组,给组内所有的成员或单独的成员发送消息,同样,也可以从组中的成员处接收消息。
    系统会记录组的每一个成员,在新成员加入或是现有的成员离开或是崩溃时,会通知组内的其他成员。

    4.jgroups简单示例

    Receive接收代码:

    View Code
    package ceshi;
    
    import org.jgroups.JChannel;
    import org.jgroups.Message;
    import org.jgroups.ReceiverAdapter;
    import org.jgroups.View;
    
    /**
     * 接收收据包
     * 
     * @author chenhaibin
     */
    public class Receive extends ReceiverAdapter {
        JChannel channel;
        String user_name = System.getProperty("user.name", "n/a");
    
        private void start() throws Exception {
            // 创建一个通道
            channel = new JChannel();
    
            // 创建一个接收器
            channel.setReceiver(this);
    
            // 加入一个群
            channel.connect("ChatCluster");
        }
    
        public static void main(String[] args) throws Exception {
            // 接收收据端
            new Receive().start();
        }
    
        // 覆盖父类的方法
        @Override
        public void receive(Message msg) {
            System.out.println(msg.getSrc() + "  发过来的数据是:  " + String.valueOf(msg.getObject()));
    
        }
    
        @Override
        public void viewAccepted(View new_view) {
            System.out.println("** view: " + new_view);
        }
    
    }

    Send接收代码:

    View Code
    package ceshi;
    
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    
    import org.jgroups.JChannel;
    import org.jgroups.Message;
    
    /**
     * 发送数据包
     * 
     * @author chenhaibin
     */
    
    public class Send {
        JChannel channel;
        // 得到本机电脑的 用户名字
        String user_name = System.getProperty("user.name", "n/a");
    
        private void start() throws Exception {
            // 创建一个通道
            channel = new JChannel();
            // 加入一个群
            channel.connect("ChatCluster");
            // 循环事件
            eventLoop();
            // 关闭通道
            channel.close();
        }
    
        /**
         * 主要 是从控制台输入内容,如果输入的内容为quit 或者 exit 那么就退出
         */
        private void eventLoop() {
            // 控制台输入内容
            BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
            while (true) {
                try {
                    System.out.print("> ");
                    System.out.flush();
                    String line = in.readLine().toLowerCase();
                    // 如果输入的内容为quit 或者 exit 那么就退出
                    if (line.startsWith("quit") || line.startsWith("exit")) {
                        break;
                    }
                    // 接受的内容
                    line = "[" + user_name + "] " + line;
    
                    // Message(arg1,arg2,arg3)三个参数
                    // 第一个参数是::: 是目的地址 如果为null,表示发给群里所有的人(包括本机) 如果有ip地址,那么只发给一个人
                    // 第二个参数是::: 本机的地址
                    // 第三个参数是::: 参数
                    Message msg = new Message(null, null, line);
                    channel.send(msg);
                } catch (Exception e) {
                }
            }
        }
    
        public static void main(String[] args) throws Exception {
            // 开始
            new Send().start();
        }
    
    }
  • 相关阅读:
    NXOpen 各种参数(字符)类型转换
    NXOpen 重命名装配组件
    NXOpen 选择过滤
    【ASP.NET Core】一个默认的网站
    将博客搬至CSDN
    VS2017 .net core web项目 添加引用 报错 vs2017添加引用时报错未能正确加载“ReferenceManagerPackage”包
    负载均衡时,在State_Server模式中的Session共享问题(不讨论负载均衡的问题)
    修改linux文件权限命令:chmod
    Linux命令学习
    开闭原则
  • 原文地址:https://www.cnblogs.com/hzcxy/p/3062601.html
Copyright © 2011-2022 走看看