unicastchanneltest.java

来自「JGRoups源码」· Java 代码 · 共 140 行

JAVA
140
字号
// $Id: UnicastChannelTest.java,v 1.4 2004/07/05 14:15:11 belaban Exp $package org.jgroups.tests;import org.jgroups.JChannel;import org.jgroups.Message;import org.jgroups.stack.IpAddress;import java.io.BufferedReader;import java.io.InputStreamReader;/** * Interactive program to test a unicast channel * @author Bela Ban March 16 2003 */public class UnicastChannelTest {    boolean  server=false;    String   host="localhost";    int      port=0;    String   props=null;    JChannel ch;    public void start(String[] args) throws Exception {        for(int i=0; i < args.length; i++) {            String tmp=args[i];            if("-server".equals(tmp)) {                server=true;                continue;            }            if("-props".equals(tmp)) {                props=args[++i];                continue;            }            if("-host".equals(tmp)) {                host=args[++i];                continue;            }            if("-port".equals(tmp)) {                port=Integer.parseInt(args[++i]);                continue;            }            help();            return;        }        if(server) {            runServer();        }        else {            runClient();        }    }    void runClient() throws Exception {        IpAddress       addr;        Message         msg;        Object          obj;        String          line;        BufferedReader  reader;        ch=new JChannel(props);        ch.connect(null); // unicast channel        addr=new IpAddress(host, port);        reader= new BufferedReader(new InputStreamReader(System.in));        while(true) {            System.out.print("> ");            line=reader.readLine();            if(line.startsWith("quit") || line.startsWith("exit")) {                ch.close();                return;            }            msg=new Message(addr, null, line);            ch.send(msg);            while((obj=ch.peek(1000)) != null) {                obj=ch.receive(1000);                if(obj == null)                    break;                if(!(obj instanceof Message)) {                    System.out.println("<-- " + obj);                }                else {                    System.out.println("<-- " + ((Message)obj).getObject());                }            }        }    }    void runServer() throws Exception {        Object  obj;        Message msg, rsp;        ch=new JChannel(props);        ch.connect(null); // this makes it a unicast channel        System.out.println("server started at " + new java.util.Date() +                           ", listening on " + ch.getLocalAddress());        while(true) {            obj=ch.receive(0);            if(!(obj instanceof Message)) {                System.out.println(obj);            }            else {                msg=(Message)obj;                System.out.println("-- " + msg.getObject());                rsp=new Message(msg.getSrc(), null, "ack for " + msg.getObject());                ch.send(rsp);            }        }    }    void help() {        System.out.println("UnicastChannelTest [-help] [-server] [-props <props>]" +                           "[-host <host>] [-port <port>]");    }    public static void main(String[] args) {        try {            new UnicastChannelTest().start(args);        }        catch(Exception ex) {            ex.printStackTrace();        }    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?