如下示例是一个抄袭过来的Http Server示例,mark一下以便查找
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.StringTokenizer;
public class HttpServer {
private static final int HTTP_PORT = 8080;
public ServerSocket getServer() throws Exception
{
return new ServerSocket(HTTP_PORT);
}
public void run()
{
ServerSocket listen;
try
{
listen = getServer();
while(true)
{
Socket client = listen.accept();
ProcessConnection cc = new ProcessConnection(client);
}
}
catch(Exception e)
{
System.out.println("Exception: " + e.getMessage());
}
}
public static void main(String argv[]) throws Exception
{
HttpServer httpserver = new HttpServer();
httpserver.run();
}
}
class ProcessConnection extends Thread
{
Socket client;
BufferedReader is;
DataOutputStream os;
public ProcessConnection(Socket s)
{
client = s;
try
{
is = new BufferedReader(new InputStreamReader(client.getInputStream()));
os = new DataOutputStream(client.getOutputStream());
} catch (IOException e) {
System.out.println("Exception: "+e.getMessage());
}
this.start();
}
public void run()
{
try
{
String request = is.readLine();
System.out.println( "Request: "+request );
StringTokenizer st = new StringTokenizer( request );
if ( (st.countTokens() >= 2) && st.nextToken().equals("GET") )
{
if ((request = st.nextToken()).startsWith("/"))
request = request.substring( 1 );
if (request.equals(""))
request = request + "index.html";
File f = new File(request);
shipDocument(os, f);
}
else
{
os.writeBytes( "400 Bad Request" );
}
client.close();
}
catch (Exception e)
{
System.out.println("Exception: " + e.getMessage());
}
}
public static void shipDocument(DataOutputStream out, File f) throws Exception
{
try
{
DataInputStream in = new DataInputStream(new FileInputStream(f));
int len = (int) f.length();
byte[] buf = new byte[len];
in.readFully(buf);
in.close();
out.writeBytes("HTTP/1.0 200 OK\r\n");
out.writeBytes("Content-Length: " + f.length() +"\r\n");
out.writeBytes("Content-Type: text/html\r\n\r\n");
out.write(buf);
out.flush();
}
catch (Exception e)
{
out.writeBytes("<html><head><title>error</title></head><body>\r\n\r\n");
out.writeBytes("HTTP/1.0 400 " + e.getMessage() + "\r\n");
out.writeBytes("Content-Type: text/html\r\n\r\n");
out.writeBytes("</body></html>");
out.flush();
}
finally
{
out.close();
}
}
}