• 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();
        }
    
    }
  • 相关阅读:
    Java中怎么控制线程訪问资源的数量
    我的Hook学习笔记
    《编写可读代码的艺术》——简单总结
    Hdu 1016 Prime Ring Problem (素数环经典dfs)
    setsockopt()使用方法(參数具体说明)
    Html5培训之精髓
    [unity3d]unity平台的预处理
    音频编辑大师 3.3 注冊名 注冊码
    linux tar.gz zip 解压缩 压缩命令
    面向对象的三个基本特征
  • 原文地址:https://www.cnblogs.com/hzcxy/p/3062601.html
Copyright © 2020-2023  润新知