|   
       Multithreading Java Server
  Multithreading Java server Server.java 
         
         
        
        
        
        
       
import java.io.*;
import java.net.*;
//The Server class creates a ServerSocket to listen to
// port number 50001.  When a client tries to connect at
//this port is creates an instance of the Service class
//to handle communications with this client.  This class
// is a thread that is started.  Each new client will get a
// new thread.
public class Server {
  public static void main(String argv[]) throws Exception { 
    try {
      ServerSocket socket = new ServerSocket(50001, 100);
      while ( true )
        new Service(socket.accept()).start(); //create and start thread
    } catch ( IOException e ) {
      System.err.println("IOException: " + e.getMessage());
    }
  }
}
//This class is a Service class that is a Thread.  It handles
//requests between a particular Client that opened a Socket to
//This server.
//This Service class simply expects the client to send the name of
//a file and then it opens up this file on the server and sends
//down the data to the client over the open Socket.
class Service extends Thread {
  Socket client;
  public Service(Socket client) { this.client = client; }
    
  public void run() {
    byte[] buf = new byte[1024]; 
    int c, i = 0;
    try {
      InputStream  in  = client.getInputStream(); 
      OutputStream out = client.getOutputStream();
      do { c = in.read();          // read filename from socket
           buf[i++] = (byte)c;
      } while ( c != 10 );
      String name = new String(buf, 0, i).trim();
      FileInputStream file = new FileInputStream(name);
      do { i = 0;
           do { c = file.read();   // load buffer from file
                buf[i++] = (byte)c;
           } while ( i < 1023 && c != 10 && c != -1 );
           out.write(buf, 0, i);   // write buffer down socket
      } while ( c != -1 );
      file.close();
      out.flush();
      client.close();
    } catch ( IOException e ) {
      System.err.println("IOException: " + e.getMessage());
    }
  }
}
 |