www.pudn.com > jnp-src.rar > MTEchoServer.java


/*
 * Java Network Programming, Second Edition
 * Merlin Hughes, Michael Shoffner, Derek Hamner
 * Manning Publications Company; ISBN 188477749X
 *
 * http://nitric.com/jnp/
 *
 * Copyright (c) 1997-1999 Merlin Hughes, Michael Shoffner, Derek Hamner;
 * all rights reserved; see license.txt for details.
 */

import java.io.*; 
import java.net.*; 
 
public class MTEchoServer extends Thread { 
  protected Socket socket; 
   
  MTEchoServer (Socket socket) { 
    this.socket = socket; 
  } 
   
  public void run () { 
    try { 
      InputStream in = socket.getInputStream (); 
      OutputStream out = socket.getOutputStream (); 
      out.write ("Welcome to the multithreaded echo server.\r\n" 
                 .getBytes ("latin1")); 
      byte[] buffer = new byte[1024]; 
      int read; 
      while ((read = in.read (buffer)) >= 0) 
        out.write (buffer, 0, read); 
    } catch (IOException ex) { 
      ex.printStackTrace (); 
    } finally { 
      try { 
        socket.close (); 
      } catch (IOException ignored) { 
      } 
    } 
  } 
 
  public static void main (String[] args) throws IOException { 
    if (args.length != 1) 
      throw new IllegalArgumentException ("Syntax: MTEchoServer "); 
    System.out.println ("Starting on port " + args[0]); 
    ServerSocket server = new ServerSocket (Integer.parseInt (args[0])); 
    while (true) { 
      Socket client = server.accept (); 
      MTEchoServer echo = new MTEchoServer (client); 
      echo.start (); 
    } 
  } 
}