// MuxTest.java
// $Id: MuxTest.java,v 1.6 2000/08/16 21:38:02 ylafon Exp $
// (c) COPYRIGHT MIT and INRIA, 1997.
// Please first read the full copyright statement in file COPYRIGHT.html
package org.w3c.www.mux.tests;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import org.w3c.www.mux.MuxSession;
import org.w3c.www.mux.MuxStream;
import org.w3c.www.mux.MuxStreamHandler;
import org.w3c.www.mux.SampleMuxHandler;
class DiscardServer extends Thread {
ServerSocket socket = null;
MuxStreamHandler handler = null;
int port = -1;
public void run() {
try {
while(true) {
System.out.println("DiscardServer@localhost:"+port+" accept.");
Socket client = socket.accept();
new MuxStream(true, handler, client);
}
} catch (Exception ex) {
System.out.println("DiscardServer: fatal error !");
ex.printStackTrace();
}
}
public DiscardServer(int port)
throws IOException
{
this.handler = SampleMuxHandler.getStreamHandler();
this.socket = new ServerSocket(port);
this.port = port;
setName("DiscardServer");
this.start();
}
}
class MuxTestClient extends Thread {
static Socket socket = null;
static MuxStream stream = null;
int count = 0;
int bufsize = 0;
byte buffer[] = null;
int total = 0;
InputStream in = null;
OutputStream out = null;
public static void makeClient(String host, int port
, int bufsize, int count)
throws IOException
{
if ( socket == null ) {
socket = new Socket(host, port);
stream = new MuxStream(false, null, socket);
}
new MuxTestClient(stream.connect(9), bufsize, count);
}
public void run() {
System.out.println(this+" bs="+bufsize+", cn="+count);
try {
long start = System.currentTimeMillis();
while (--count >= 0)
out.write(buffer, 0, buffer.length);
out.close();
out.flush();
long end = System.currentTimeMillis();
System.out.println(this
+ ": emited "+total+" bytes "
+ " in "+(end-start)+" ms.");
} catch (Exception ex) {
System.out.println(this+": failed");
ex.printStackTrace();
}
}
MuxTestClient(MuxSession session, int bufsize, int count)
throws IOException
{
this.in = session.getInputStream();
this.out = session.getOutputStream();
this.bufsize = bufsize;
this.count = count;
this.buffer = new byte[bufsize];
this.total = bufsize*count;
setName("client-"+session.getIdentifier());
start();
}
}
public class MuxTest {
public static void usage() {
System.out.println("-h host -p port -t bufsize count>*");
System.out.println("-s (server) -p port");
}
public static void main(String args[]) {
boolean server = false;
String host = null;
int port = -1;
for (int i = 0 ; i < args.length ; i++) {
if ( args[i].equals("-s") ) {
server = true;
} else if (args[i].equals("-h")) {
host = args[++i];
} else if (args[i].equals("-p")) {
try {
port = Integer.parseInt(args[++i]);
} catch (Exception ex) {
usage();
}
} else if (args[i].equals("-t")) {
if ((port < 0) || (host == null))
usage();
try {
int bufsize = Integer.parseInt(args[++i]);
int count = Integer.parseInt(args[++i]);
MuxTestClient.makeClient(host, port, bufsize, count);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
if ( server ) {
try {
new DiscardServer(port);
} catch(Exception ex) {
ex.printStackTrace();
}
}
}
}