001: // $Id: McastTest.java,v 1.5 2005/05/30 16:15:11 belaban Exp $
002:
003: package org.jgroups.tests;
004:
005: import java.io.DataInputStream;
006: import java.net.DatagramPacket;
007: import java.net.DatagramSocket;
008: import java.net.InetAddress;
009: import java.util.StringTokenizer;
010:
011: /**
012: @author Bela Ban
013: @version $Revision: 1.5 $
014: */
015: public class McastTest {
016:
017: public static void main(String args[]) {
018: DatagramSocket sock;
019: DatagramPacket packet;
020: byte[] buf = new byte[0];
021: boolean receiver = true;
022: String val;
023: InetAddress addr = null;
024: int port = 0;
025:
026: for (int i = 0; i < args.length; i++) {
027: val = args[i];
028: if ("-help".equals(val)) {
029: help();
030: return;
031: }
032: if ("-sender".equals(val)) {
033: receiver = false;
034: continue;
035: }
036: if ("-receiver".equals(val)) {
037: receiver = true;
038: try {
039: addr = InetAddress.getByName(args[++i]);
040: port = Integer.parseInt(args[++i]);
041: } catch (Exception e) {
042: System.err.println(e);
043: help();
044: return;
045: }
046: continue;
047: }
048: help();
049: }
050:
051: try {
052: if (receiver) {
053: sock = new DatagramSocket(port, addr);
054: System.out.println("Socket=" + sock.getLocalAddress()
055: + ':' + sock.getLocalPort());
056: System.out.println("starting as receiver");
057: receiverLoop(sock);
058: } else {
059: sock = new DatagramSocket();
060: System.out.println("Socket=" + sock.getLocalAddress()
061: + ':' + sock.getLocalPort());
062: System.out.println("starting as sender");
063: senderLoop(sock);
064: }
065: } catch (Exception e) {
066: System.err.println(e);
067: }
068:
069: }
070:
071: static void receiverLoop(DatagramSocket sock) {
072: DatagramPacket packet;
073: byte[] buf;
074:
075: while (true) {
076: buf = new byte[256];
077: packet = new DatagramPacket(buf, buf.length);
078: try {
079: sock.receive(packet);
080: System.out.println("Receive packet from "
081: + packet.getAddress().getHostAddress() + ':'
082: + packet.getPort() + ": "
083: + new String(packet.getData()));
084: } catch (Exception e) {
085: System.err.println(e);
086: break;
087: }
088: }
089: }
090:
091: static void senderLoop(DatagramSocket sock) {
092: DataInputStream in;
093: String line;
094: DatagramPacket packet;
095: InetAddress dst;
096: int dst_port;
097: StringTokenizer tok;
098: StringBuffer sb;
099: String tmp, buf;
100: byte[] bbuf;
101:
102: in = new DataInputStream(System.in);
103: while (true) {
104: try {
105: System.out.print("> ");
106: line = in.readLine();
107: if (line.startsWith("quit") || line.startsWith("exit"))
108: break;
109: tok = new StringTokenizer(line);
110: try {
111: dst = InetAddress.getByName(tok.nextToken());
112: dst_port = Integer.parseInt(tok.nextToken());
113: } catch (Exception e) {
114: System.err.println(e);
115: continue;
116: }
117: sb = new StringBuffer();
118: while (tok.hasMoreTokens()) {
119: tmp = tok.nextToken();
120: sb.append(tmp + ' ');
121: }
122: buf = sb.toString();
123: System.out.println("sending " + buf);
124: bbuf = buf.getBytes();
125: packet = new DatagramPacket(bbuf, bbuf.length, dst,
126: dst_port);
127: sock.send(packet);
128: } catch (Exception e) {
129: System.err.println(e);
130: break;
131: }
132: }
133: }
134:
135: static void help() {
136: System.out
137: .println("McastTest [-help] [-sender | -receiver <local addr> <local port>]");
138: }
139:
140: }
|