content: package edu.berkeley.cs.amplab.carat.android.protocol;
  
  import java.io.*;
  import java.util.*;
  
  
  /**
   * An example of subclassing NanoHTTPD to make a custom HTTP server.
   */
  public class HelloServer extends NanoHTTPD
  {
  	public HelloServer() throws IOException
  	{
  		super(8080, new File("."));
  	}
  
  	public Response serve( String uri, String method, Properties header, Properties parms, Properties files )
  	{
  		System.out.println( method + " '" + uri + "' " );
  		String msg = "<html><body><h1>Hello server</h1>\n";
  		if ( parms.getProperty("username") == null )
  			msg +=
  				"<form action='?' method='get'>\n" +
  				"  <p>Your name: <input type='text' name='username'></p>\n" +
  				"</form>\n";
  		else
  			msg += "<p>Hello, " + parms.getProperty("username") + "!</p>";
  
  		msg += "</body></html>\n";
  		return new NanoHTTPD.Response( HTTP_OK, MIME_HTML, msg );
  	}
  
  
  	public static void main( String[] args )
  	{
  		try
  		{
  			new HelloServer();
  		}
  		catch( IOException ioe )
  		{
  			System.err.println( "Couldn't start server:\n" + ioe );
  			System.exit( -1 );
  		}
  		System.out.println( "Listening on port 8080. Hit Enter to stop.\n" );
  		try { System.in.read(); } catch( Throwable t ) {};
  	}
  }
  