Network Protocol Java

/* $Id: SimpleHttpServer.java 124 2010-09-23 16:25:36Z altdotua@gmail.com $ */
//package djudge.utils;
import java.net.ServerSocket;
import java.net.Socket;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
interface SimpleHttpServerDataProvider
{
  public String getHtmlPage(String query);
}
public class SimpleHttpServer
{
  final SimpleHttpServerDataProvider dataProvider;
  
  public SimpleHttpServer(SimpleHttpServerDataProvider dataProvider, int port)
  {
    
    class SocketProcessor implements Runnable
    {
      private Socket s;
      private InputStream is;
      private OutputStream os;
      private SimpleHttpServerDataProvider dataProvider;
      private SocketProcessor(Socket s, SimpleHttpServerDataProvider prov) throws Throwable
      {
        this.dataProvider = prov;
        this.s = s;
        this.is = s.getInputStream();
        this.os = s.getOutputStream();
      }
      public void run()
      {
        try
        {
          readInputHeaders();
          writeResponse("");
        } catch (Throwable t)
        {
          /*do nothing*/
        } finally
        {
          try
          {
            s.close();
          } catch (Throwable t)
          {
            /*do nothing*/
          }
        }
        
      }
      private void writeResponse(String s) throws Throwable
      {
        String response = "HTTP/1.1 200 OK\r\n"
            + "Server: DJudge.http\r\n"
            + "Content-Type: text/html\r\n" + "Content-Length: "
            + s.length() + "\r\n" + "Connection: close\r\n\r\n";
        String result = response + dataProvider.getHtmlPage("");
        os.write(result.getBytes());
        os.flush();
      }
      private void readInputHeaders() throws Throwable
      {
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        while (true)
        {
          String s = br.readLine();
          if (s == null || s.trim().length() == 0)
          {
            break;
          }
          
        }
      }
    }
    
    
    this.dataProvider = dataProvider;
    try
    {
        ServerSocket ss = new ServerSocket(port);
        
        while (true)
        {
          Socket s = ss.accept();
          
          new Thread(new SocketProcessor(s, dataProvider)).start();
        }
    }
    catch (Exception e)
    {
      
    }
    catch (Throwable e)
    {
      
    }
  }
  
}