Java HTTP web server demo. Actually a HTTP web server is nothing but a TCP socket connection where first return content must be "HTTP/1.0" with content type and then contents (Html type) or specified. And At last connection must close so the connection stream must break to client. If it is a traditional TCPServer then no need to terminate the connection, we need connection stream. And there is no need of return first content as "HTTP/1.0 ...". For TCPServer code click here.
Keep it simple with this code.
Keep it simple with this code.
// --------------WebServer.java
import java.io.*;
import java.net.*;
public class WebServer
{
public static void main(String argv[]) throws Exception
{
String clientSentence;
String capitalizedSentence;
ServerSocket welcomeSocket = new ServerSocket(8989);
// get self IP address and subnet mask
InetAddress localHost = Inet4Address.getLocalHost();
NetworkInterface networkInterface = NetworkInterface.getByInetAddress(localHost);
String ipAddress = localHost.getHostAddress();
String subnetMask = "/"+networkInterface.getInterfaceAddresses().get(0).getNetworkPrefixLength();
System.out.println("My ip range :"+ipAddress + subnetMask);
while (true) {
Socket connectionSocket = welcomeSocket.accept();
// get client ip address
System.out.print("\nRequest from:"+connectionSocket.getInetAddress().getHostAddress());
BufferedReader inFromClient =
new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
clientSentence = inFromClient.readLine();
System.out.println("\nRequest received: " + clientSentence);
// http response is require
capitalizedSentence = "HTTP/1.0 200 OK\r\n";
// content type must set. here it is html content type
capitalizedSentence = capitalizedSentence + "Content-Type: text/html\r\n\r\n";
/**
//// above code is managed if we write as
String s = "HTTP/1.0 ";
//you probably have seen these if you have been surfing the web a while
switch (return_code) {
case 200:
s = s + "200 OK";
break;
case 400:
s = s + "400 Bad Request";
break;
case 403:
s = s + "403 Forbidden";
break;
case 404:
s = s + "404 Not Found";
break;
case 500:
s = s + "500 Internal Server Error";
break;
case 501:
s = s + "501 Not Implemented";
break;
}
switch (file_type) {
//plenty of types for you to fill in
case 0:
s = s + "Content-Type: text/plain\r\n";
break;
case 1:
s = s + "Content-Type: image/jpeg\r\n";
break;
case 2:
s = s + "Content-Type: image/gif\r\n";
case 3:
s = s + "Content-Type: application/x-zip-compressed\r\n";
default:
s = s + "Content-Type: text/html\r\n";
break;
}
// for more detail http://fragments.turtlemeat.com/javawebserver.php
*/
//// fileContent must have html file content. this is html web server file : index.html probabely. read file from file system and then read the content and then write to outputStream.
String fileContent = "<h1>Hello, World! </h1>";
outToClient.writeBytes(capitalizedSentence+ fileContent);
outToClient.writeBytes("<h3>this is new test 1</h3><h4>this is new test2</h4>");
outToClient.writeBytes("<h5>this is new test new 3</h5>");
//// connection should close to http request. If it is a stream connection then below code is not require. In case of socket connection like TCPServer then we don't need it.
outToClient.close();
}
}
}
No comments:
Post a Comment