Had to create a very very simple http server, that only implements the GET function, in Java for one of our assignments.
When run you can get file from your computer using http://127.0.0.1:8001/filename.jpg.
Could use this kind of thing for some multiplayer game in the future.
Am currently working on an augmented reality program. Should be AWESOME!
Am also testing out a new code formatter. Hopefully things become readable. Unfortunately tabs do not appear as tabs... Big thanks to David Craft.
Here's the code for the server.
import java.net.ServerSocket; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.net.InetAddress; import java.net.Socket; import java.util.StringTokenizer; /** * @author Milk * */ public class HttpServer { /** * * @param args */ public static void main(String[] args) { try { ServerSocket socket = new ServerSocket(8001); InetAddress serverHost = InetAddress.getLocalHost(); System.out.println("Server destination: " + serverHost.getHostAddress() + ", "+ socket.getLocalPort()); // Repeatedly handle requests for processing. while(true){ Socket clientConnection = socket.accept(); System.err.println("Connection established."); BufferedReader in = new BufferedReader(new InputStreamReader( clientConnection.getInputStream())); DataOutputStream out = new DataOutputStream(clientConnection.getOutputStream()); // Read string. String inString = in.readLine(); System.out.println(inString); StringTokenizer st = new StringTokenizer(inString); st.nextToken(); String request = "." + st.nextToken(); // Read the requested file. FileInputStream f; try{ f = new FileInputStream(new File(request)); sendFile(f, out); } catch (FileNotFoundException e){ try{ // Display 404 screen. f = new FileInputStream(new File("./404.jpg")); sendFile(f, out); } catch (FileNotFoundException e2){ out.writeBytes("HTTP/1.0 404 Not Found\r\n"); } } // Close this connection. clientConnection.close(); System.err.println("Connection closed."); } } catch(IOException e) { e.printStackTrace(); } } /** * Sends the file. * @param f The file to be sent. * @param out The DataOutputStream. * @throws IOException */ private static void sendFile(FileInputStream f, DataOutputStream out) throws IOException{ // Send the file byte by byte. while(true){ int b = f.read(); if (b == -1){ break; } out.write(b); } } }
Cheers,
Milk