package org.jgroups.tests;
import org.jgroups.util.Util;
import java.io.*;
import java.net.Socket;
/**
* Interactive program to test a unicast channel
* @author Bela Ban March 16 2003
*/
public class Bsh {
String host="localhost";
int port=0;
long timeout=0;
public void start(String[] args) throws Exception {
for(int i=0; i < args.length; i++) {
String tmp=args[i];
if("-host".equals(tmp)) {
host=args[++i];
continue;
}
if("-port".equals(tmp)) {
port=Integer.parseInt(args[++i]);
continue;
}
if("-timeout".equals(tmp)) {
timeout=Long.parseLong(args[++i]);
continue;
}
help();
return;
}
runClient();
}
void runClient() throws Exception {
final Socket sock=new Socket(host, port);
final InputStream in=sock.getInputStream();
final OutputStream out=sock.getOutputStream();
final BufferedReader reader= new BufferedReader(new InputStreamReader(System.in));
new Thread() {
public void run() {
byte[] buf=new byte[1024];
while(!sock.isClosed()) {
try {
int num=in.read(buf, 0, buf.length);
String str=new String(buf, 0, num);
System.out.println(str);
}
catch(IOException e) {
e.printStackTrace();
break;
}
}
}
}.start();
while(true) {
System.out.print("> ");
String line=reader.readLine();
if(line.startsWith("quit") || line.startsWith("exit")) {
Util.close(sock);
return;
}
line=line + "\n";
byte[] buf=line.getBytes();
out.write(buf, 0, buf.length);
out.flush();
}
}
static void help() {
System.out.println("Bsh [-help] [-host <host>] [-port <port>] [-timeout <timeout>]");
}
public static void main(String[] args) {
try {
new Bsh().start(args);
}
catch(Exception ex) {
ex.printStackTrace();
}
}
}