hmmm
This commit is contained in:
parent
45f9873e95
commit
df197e09c2
2 changed files with 458 additions and 0 deletions
126
WebServer.java
Normal file
126
WebServer.java
Normal file
|
@ -0,0 +1,126 @@
|
|||
//
|
||||
// Multithreaded Java WebServer
|
||||
// (C) 2001 Anders Gidenstam
|
||||
// (based on a lab in Computer Networking: ..)
|
||||
//
|
||||
|
||||
import java.io.*;
|
||||
import java.net.*;
|
||||
import java.util.*;
|
||||
import java.net.InetAddress.*;
|
||||
|
||||
public final class WebServer
|
||||
{
|
||||
public static void main(String argv[]) throws Exception
|
||||
{
|
||||
// Set port number
|
||||
int port = 0;
|
||||
|
||||
// Establish the listening socket
|
||||
ServerSocket serverSocket = new ServerSocket(port);
|
||||
System.out.println("Port number is: "+serverSocket.getLocalPort());
|
||||
|
||||
|
||||
// Wait for and process HTTP service requests
|
||||
while (true) {
|
||||
// Wait for TCP connection
|
||||
Socket requestSocket = serverSocket.accept();
|
||||
requestSocket.setSoLinger(true, 5);
|
||||
|
||||
// Create an object to handle the request
|
||||
HttpRequest request = new HttpRequest(requestSocket);
|
||||
|
||||
//request.run()
|
||||
|
||||
// Create a new thread for the request
|
||||
Thread thread = new Thread(request);
|
||||
|
||||
// Start the thread
|
||||
thread.start();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final class HttpRequest implements Runnable
|
||||
{
|
||||
// Constants
|
||||
// Recognized HTTP methods
|
||||
final static class HTTP_METHOD
|
||||
{
|
||||
final static String GET = "GET";
|
||||
final static String HEAD = "HEAD";
|
||||
final static String POST = "POST";
|
||||
}
|
||||
|
||||
final static String HTTPVERSION = "HTTP/1.0";
|
||||
final static String CRLF = "\r\n";
|
||||
Socket socket;
|
||||
|
||||
// Constructor
|
||||
public HttpRequest(Socket socket) throws Exception
|
||||
{
|
||||
this.socket = socket;
|
||||
}
|
||||
|
||||
// Implements the run() method of the Runnable interface
|
||||
public void run()
|
||||
{
|
||||
try {
|
||||
processRequest();
|
||||
} catch (Exception e) {
|
||||
System.out.println(e);
|
||||
}
|
||||
}
|
||||
|
||||
// Process a HTTP request
|
||||
private void processRequest() throws Exception
|
||||
{
|
||||
// Get the input and output streams of the socket.
|
||||
InputStream ins = socket.getInputStream();
|
||||
DataOutputStream outs = new DataOutputStream(socket.getOutputStream());
|
||||
|
||||
// Set up input stream filters
|
||||
BufferedReader br = new BufferedReader(new InputStreamReader(ins));
|
||||
|
||||
|
||||
// Get the request line of the HTTP request
|
||||
String requestLine = br.readLine();
|
||||
|
||||
// Display the request line
|
||||
System.out.println();
|
||||
System.out.println("Request:");
|
||||
System.out.println(" " + requestLine);
|
||||
|
||||
// Close streams and sockets
|
||||
outs.close();
|
||||
br.close();
|
||||
socket.close();
|
||||
}
|
||||
|
||||
private static void sendBytes(FileInputStream fins,
|
||||
OutputStream outs) throws Exception
|
||||
{
|
||||
// Coopy buffer
|
||||
byte[] buffer = new byte[1024];
|
||||
int bytes = 0;
|
||||
|
||||
while ((bytes = fins.read(buffer)) != -1) {
|
||||
outs.write(buffer, 0, bytes);
|
||||
}
|
||||
}
|
||||
|
||||
private static String contentType(String fileName)
|
||||
{
|
||||
if (fileName.toLowerCase().endsWith(".htm") ||
|
||||
fileName.toLowerCase().endsWith(".html")) {
|
||||
return "text/html";
|
||||
} else if (fileName.toLowerCase().endsWith(".gif")) {
|
||||
return "image/gif";
|
||||
} else if (fileName.toLowerCase().endsWith(".jpg")) {
|
||||
return "image/jpeg";
|
||||
} else {
|
||||
return "application/octet-stream";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue