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(); } }