/** * * @author pquiring */ import java.io.*; import java.net.*; public class ServerClient extends Thread { private Socket s; private InputStream is; private OutputStream os; private char mode; private Reader reader; private Writer writer; private Latency latency; public ServerClient(Socket s) { this.s = s; } public void run() { //read client request try { is = s.getInputStream(); os = s.getOutputStream(); mode = (char)is.read(); switch (mode) { case 'F': //full duplex reader = new Reader(); reader.start(); writer = new Writer(); writer.start(); break; case 'S': //client send only reader = new Reader(); reader.start(); break; case 'R': //client recv only writer = new Writer(); writer.start(); break; case 'L': //latency test latency = new Latency(); latency.start(); break; default: s.close(); break; } } catch (Exception e) { e.printStackTrace(); } } private class Reader extends Thread { public void run() { byte data[] = new byte[1460]; try { while (true) { int r = is.read(data); if (r == -1) break; } } catch (Exception e) { } } } private class Writer extends Thread { public void run() { byte data[] = new byte[1460]; try { while (true) { os.write(data); } } catch (Exception e) { } } } private class Latency extends Thread { public void run() { byte data[] = new byte[4]; try { while (true) { int r = is.read(data); if (r == -1) break; os.write(data); } } catch (Exception e) { } } } }