package net.web;

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

public class WebServer {
  public static void main(String args[]) {
    WebServer ws = new WebServer(80);
  }

  WebServer(int port) {
    try {
      java.net.ServerSocket ss
          = new java.net.ServerSocket(port);
      while (true) {
        startClient(ss.accept());
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  public void startClient(java.net.Socket s)
      throws java.io.IOException {
    ClientThread
        ct = new ClientThread(s);
    Thread t = new Thread(ct);
    t.start();
  }
}

class ClientThread implements
    Runnable {
  private java.net.Socket s;
  private java.io.BufferedReader br;
  private java.io.PrintWriter pw;
  private static final String
      notFoundString =
      "HTTP/1.0 501 Not Implemented\n"
      + "Content-type: text/plain\n\n";
  private static final String
      okString =
      "HTTP/1.0 200 OK\n"
      + "Content-type: text/gui.html\n\n";


  ClientThread(java.net.Socket _s) {
    s = _s;
    try {
      br =
          new java.io.BufferedReader(
              new InputStreamReader(
                  s.getInputStream()));
      pw =
          new java.io.PrintWriter(
              s.getOutputStream(), true);
    } catch (java.io.IOException e) {
      e.printStackTrace();
    }
  }

  public void run() {
    try {
      String line =
          br.readLine();
      java.util.StringTokenizer
          st =
          new java.util.StringTokenizer(
              line);
      System.out.println(line);
      if (st.nextToken().equals("GET"))
        countTo10();
      else
        pw.println(notFoundString);
      pw.close();
      s.close();
    } catch (Exception e) {
    }
  }

  public void countTo10() {
    pw.println("HTTP/1.0 200 OK");
    pw.println("Content-type: text/plain");
    pw.println();
    for (int i = 0; i < 10; i++)
      pw.println("i=" + i);
  }

  public void getAFile(java.util.StringTokenizer st)
      throws java.io.FileNotFoundException,
      IOException {
    pw.println(okString);
    String fileName
        = st.nextToken();
    pw.println("date=" + new java.util.Date());
    java.io.BufferedReader
        fileReader = new
            java.io.BufferedReader(new
                FileReader(
                    "d:\\www\\" + fileName));
    String fileLine = null;
    while (
        (fileLine =
        fileReader.readLine())
        != null)
      pw.println(fileLine);
  }

  public Socket getS() {
    return s;
  }

  public void setS(Socket s) {
    this.s = s;
  }

  public BufferedReader getBr() {
    return br;
  }

  public void setBr(BufferedReader br) {
    this.br = br;
  }

  public PrintWriter getPw() {
    return pw;
  }

  public void setPw(PrintWriter pw) {
    this.pw = pw;
  }

  public static String getNotFoundString() {
    return notFoundString;
  }

  public static String getOkString() {
    return okString;
  }
}