FileDocCategorySizeDatePackage
clientTester.javaAPI DocExample1900Thu Apr 03 15:24:10 BST 1997None

clientTester.java

import java.net.*;
import java.io.*;

public class clientTester {

  public static void main(String[] args) {

    int thePort;
    ServerSocket ss;
    Socket theConnection;
    
    try {
      thePort = Integer.parseInt(args[0]);
    }  
    catch (Exception e) {
      thePort = 0;
    }
    
    try {
      ss = new ServerSocket(thePort);
      System.out.println("Listening for connections on port " + ss.getLocalPort());

      while (true) {
        theConnection = ss.accept();
        System.out.println("Connection established with " + theConnection);
        InputThread it = new InputThread(theConnection.getInputStream());
        it.start();
        OutputThread ot = new OutputThread(theConnection.getOutputStream(), it);
        ot.start();
        // need to wait for ot and it to finish 
        try {
          ot.join();
          it.join();
        }
        catch (InterruptedException e) {
        } 
      }
    }
    catch (IOException e) {
    
    }
  
  }

}

class InputThread extends Thread {
  
  InputStream is;
  
   public InputThread(InputStream is) {
     this.is = is;
   }

   public void run()  {
   
     try {
       while (true) {
         int i = is.read();
         if (i == -1) break;
         char c = (char) i;
         System.out.print(c);
       }
     }
     catch (IOException e) {
       System.err.println(e);
     }
   
   }

}

class OutputThread extends Thread {
  
  PrintStream ps;
  DataInputStream is;
  InputThread it;
    
   public OutputThread(OutputStream os, InputThread it) {
     ps = new PrintStream(os);
     this.it = it;
     is = new DataInputStream(System.in);
   }

   public void run() {

     String line;
     try {
       while (true) {
         line = is.readLine();
         if (line.equals(".")) break;
         ps.println(line);
       }   
     }
     catch (IOException e) {
     
     }
      it.stop();
   }

}