diff --git a/Network Lab/HTTP Web Server/CS348-lab3.pdf b/Network Lab/HTTP Web Server/CS348-lab3.pdf
new file mode 100644
index 0000000..2f51d04
Binary files /dev/null and b/Network Lab/HTTP Web Server/CS348-lab3.pdf differ
diff --git a/Network Lab/HTTP Web Server/Code&File/Config.config b/Network Lab/HTTP Web Server/Code&File/Config.config
new file mode 100644
index 0000000..1f74e0b
--- /dev/null
+++ b/Network Lab/HTTP Web Server/Code&File/Config.config
@@ -0,0 +1,4 @@
+#Webserver Config File
+max_concurrent_thread=3
+blockIp=172.16.191.125,172.16.191.20,172.16.191.33,172.16.186.33
+defaultFile=./index.html
diff --git a/Network Lab/HTTP Web Server/Code&File/HelloWorld.html b/Network Lab/HTTP Web Server/Code&File/HelloWorld.html
new file mode 100644
index 0000000..479089a
--- /dev/null
+++ b/Network Lab/HTTP Web Server/Code&File/HelloWorld.html
@@ -0,0 +1,6 @@
+
+
+
+ Hello world
+
+
diff --git a/Network Lab/HTTP Web Server/Code&File/HttpServer.class b/Network Lab/HTTP Web Server/Code&File/HttpServer.class
new file mode 100644
index 0000000..55df7a6
Binary files /dev/null and b/Network Lab/HTTP Web Server/Code&File/HttpServer.class differ
diff --git a/Network Lab/HTTP Web Server/Code&File/HttpServer.java b/Network Lab/HTTP Web Server/Code&File/HttpServer.java
new file mode 100644
index 0000000..e0e74e5
--- /dev/null
+++ b/Network Lab/HTTP Web Server/Code&File/HttpServer.java
@@ -0,0 +1,112 @@
+import java.io.BufferedReader;
+import java.io.DataOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.PrintStream;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.util.Scanner;
+
+public class HttpServer
+{
+ public static void main(String[] args)
+ {
+ ServerSocket server = null;
+ int port = 1234;
+ Scanner in = new Scanner(System.in);
+ System.out.println("Press any key to start the server");
+ in.next();
+ try
+ {
+ server = new ServerSocket(port);
+ System.out.println("Server is started at port "+port);
+ }
+ catch (IOException e)
+ {
+ // TODO Auto-generated catch block
+ System.out.println("Error: Server with port "+port +" cannot be created");
+ e.printStackTrace();
+ return;
+ }
+
+ while(true)
+ {
+ Socket client = null;
+ try
+ {
+ client = server.accept();
+ String clientIp = client.getRemoteSocketAddress().toString();
+ clientIp = clientIp.substring(1, clientIp.indexOf(':'));
+ System.out.println("client request accepted at port "+port +" and ClienIp is "+clientIp);
+ }
+ catch (IOException e)
+ {
+ // TODO Auto-generated catch block
+ System.out.println("ERROR : client request can't be accepted at port "+port);
+ e.printStackTrace();
+ return;
+ }
+
+ try {
+ processClientHtmlRequest(client);
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }
+
+ private static void processClientHtmlRequest(Socket client) throws IOException
+ {
+ // TODO Auto-generated method stub
+ DataOutputStream printStream = new DataOutputStream(client.getOutputStream());
+ InputStreamReader inputReader = new InputStreamReader(client.getInputStream());
+ BufferedReader bufferReader = new BufferedReader(inputReader);
+
+ String msg = bufferReader.readLine();
+ System.out.print("Request from client :" + msg+"\n");
+ String[] tokens = msg.split("[ /]");
+ String data = "";
+ if(tokens[2].equals("HttpServer.java") || tokens[2].equals("MultiThreadedHttpServer.java"))
+ {
+ tokens[2] = "xyz";
+ }
+ FileInputStream fi = null;
+ try {
+ String val =""+ System.getProperty("user.dir");
+ //System.out.println(val);
+ File file = new File(val+"/"+tokens[2]);
+ fi= new FileInputStream(file);
+ } catch (Exception e) {
+ // TODO: handle exception
+ System.out.println("no file");
+ printStream.write(("HTTP/1.0 404 Not Found\r\n\r\n").getBytes());
+ printStream.close();
+ inputReader.close();
+ bufferReader.close();
+ System.out.println("connection close for this client\n");
+ return;
+ }
+ printStream.write(("HTTP/1.1 200 OK\r\n").getBytes());
+ if(tokens[2].contains("jpg"))
+ printStream.write(("Content-Type: image/jpeg\r\n\r\n").getBytes());
+ else
+ printStream.write(("Content-Type: text/html\r\n\r\n").getBytes());
+ //printStream.println("Content-Length: " + data.length());
+ int totalByte;
+ byte[] buffer = new byte[2048];
+ while((totalByte = fi.read(buffer))!=-1)
+ {
+ printStream.write(buffer,0,totalByte);
+ }
+ printStream.flush();
+ printStream.close();
+ inputReader.close();
+ bufferReader.close();
+ System.out.println("connection close for this client\n");
+ }
+}
+
diff --git a/Network Lab/HTTP Web Server/Code&File/MultiThreadedHttpServer.class b/Network Lab/HTTP Web Server/Code&File/MultiThreadedHttpServer.class
new file mode 100644
index 0000000..2e7ba97
Binary files /dev/null and b/Network Lab/HTTP Web Server/Code&File/MultiThreadedHttpServer.class differ
diff --git a/Network Lab/HTTP Web Server/Code&File/MultiThreadedHttpServer.java b/Network Lab/HTTP Web Server/Code&File/MultiThreadedHttpServer.java
new file mode 100644
index 0000000..21b8224
--- /dev/null
+++ b/Network Lab/HTTP Web Server/Code&File/MultiThreadedHttpServer.java
@@ -0,0 +1,231 @@
+import java.io.BufferedReader;
+import java.io.DataOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.InputStreamReader;
+import java.io.PrintStream;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.util.Properties;
+import java.util.Scanner;
+import java.util.Date;
+
+
+
+class htmlRequestHandler implements Runnable
+{
+ private Socket client ;
+ private String serverText;
+
+ //constructor
+ htmlRequestHandler(Socket client,String serverText)
+ {
+ this.client = client;
+ this.serverText = serverText;
+ }
+ public htmlRequestHandler() {
+
+ }
+
+ //overriding run
+ public void run()
+ {
+ try
+ {
+ //Increasing active thread count by 1
+ MultiThreadedHttpServer.threadCount++;
+ DataOutputStream printStream = new DataOutputStream(client.getOutputStream());
+ InputStreamReader inputReader = new InputStreamReader(client.getInputStream());
+ BufferedReader bufferReader = new BufferedReader(inputReader);
+
+ //Reading Request from client
+ String msg = bufferReader.readLine();
+ System.out.print("Request message : "+msg + "\n");
+ String[] tokens = msg.split("[ /]");
+ if(tokens[2].length() == 0)
+ {
+ tokens[2] = this.serverText;
+ }
+ if(tokens[2].equals("HttpServer.java") || tokens[2].equals("MultiThreadedHttpServer.java"))
+ {
+ tokens[2] = "xyz";
+ }
+ String data = "";
+ FileInputStream fi = null;
+ try
+ {
+ String val =""+ System.getProperty("user.dir");
+ File file = new File(val+"/"+tokens[2]);
+ fi= new FileInputStream(file);
+ }
+ catch (Exception e)
+ {
+ System.out.println("no file");
+ printStream.write(("HTTP/1.1 404 Not Found\r\n\r\n").getBytes());
+ printStream.close();
+ inputReader.close();
+ bufferReader.close();
+ Thread.sleep(10000);
+ MultiThreadedHttpServer.threadCount--;
+ return;
+ }
+ printStream.write(("HTTP/1.1 200 OK\r\n").getBytes());
+ if(tokens[2].contains("jpg"))
+ printStream.write(("Content-Type: image/jpeg\r\n\r\n").getBytes());
+ else
+ printStream.write(("Content-Type: text/html\r\n\r\n").getBytes());
+ //printStream.write(("Content-Length: " + data.length()+"\n\n").getBytes());;
+ int totalByte;
+ byte[] buffer = new byte[2048];
+ while((totalByte = fi.read(buffer))!=-1)
+ {
+ printStream.write(buffer,0,totalByte);
+ }
+ printStream.flush();
+ printStream.close();
+ inputReader.close();
+ bufferReader.close();
+ client.close();
+ //make thread sleep for 10s so that we can see effect of max allowed thread
+ Thread.sleep(10000);
+ MultiThreadedHttpServer.threadCount--;
+ }
+ catch (Exception e)
+ {
+ // TODO: handle exception
+ }
+ }
+}
+
+public class MultiThreadedHttpServer
+{
+ public static int threadCount = 0;
+ public static void main(String[] args)
+ {
+ ServerSocket server = null;
+ int port = 1234;
+ Scanner in = new Scanner(System.in);
+ Properties prop = new Properties();
+
+ //loading Config.config file
+ String val =""+ System.getProperty("user.dir");
+ String configFile = val+"/Config.config";
+ try
+ {
+ InputStream is = new FileInputStream(configFile);
+ prop.load(is);
+ }
+ catch (FileNotFoundException e1)
+ {
+ System.out.println("Config File not found");
+ e1.printStackTrace();
+ return;
+ }
+ catch (IOException e)
+ {
+ e.printStackTrace();
+ return;
+ }
+
+ System.out.println("Press any key to start the server........");
+ in.next();
+ try
+ {
+ //ServerSocket at port 1234 created
+ server = new ServerSocket(port);
+ System.out.println("Server is started at port "+port);
+ }
+ catch (IOException e)
+ {
+ System.out.println("Error: Server with port "+port +" cannot be created");
+ e.printStackTrace();
+ return;
+ }
+
+ while(true)
+ {
+ Socket client = null;
+ try
+ {
+ client = server.accept();
+ System.out.println("client request accepted at port "+port);
+ }
+ catch (IOException e)
+ {
+ System.out.println("ERROR : client request can't be accepted at port "+port);
+ e.printStackTrace();
+ return;
+ }
+ String ip = prop.getProperty("blockIp");
+ String[] ipTokens = ip.split(",");
+ String clientIp = client.getRemoteSocketAddress().toString();
+ clientIp = clientIp.substring(1, clientIp.indexOf(':'));
+ System.out.println("Client ip is : "+clientIp);
+ boolean block = false;
+
+ //Checking if Client ip is block
+ for(int i=0;i
+
+
+ Available File
+ 1.HelloWorld.html
+ 2.messi.jpg
+ 3.TCP.txt
+
+