multithreaded static Web server (original) Java version
buffer-based output for overcoming memory overflow problems
File One: Httpwebserveroflcl.java
Package COM.CN.LCL;
import Java.io.BufferedReader;
import Java.io.DataInputStream;
import java.io.File;
import Java.io.FileInputStream;
import java.io.IOException;
import Java.io.InputStreamReader;
import Java.io.PrintStream;
import Java.net.ServerSocket;
import Java.net.Socket;
import Java.net.URLDecoder;
Public class HTTPWEBSERVEROFLCL {
Private Static int counter = 0;
Public Static void Main (string[] args) {
WebServer ();
}
Public Static void WebServer () {
int PORT = 8080;
ServerSocket Server = null;
Socket client = null;
Try {
Server = new serversocket (PORT);
System. out. println ("Web server start, Access port number:" + port);
while (true) {
Client = Server.accept ();
counter+ +;
System. out. println ("First" + counter + "customer request");
New Communicationthread (client). Start ();
}
} catch (Exception e) {
E.printstacktrace ();
} finally {
Try {
Client.close ();
} Catch (IOException E1) {
E1.printstacktrace ();
}
Try {
Server.close ();
} catch (IOException e) {
E.printstacktrace ();
}
}
}
}
class Communicationthread extends Thread {
Socket client = null;
Public Communicationthread (Socket client) {
this. Client = client;
}
Public void Run () {
Try {
String Destip = client.getinetaddress (). toString ();
String Destport = client.getport () + "";
System. out. println ("Request Source IP:" + destip + "----Request Response Port:" + destport);
BufferedReader reader = new bufferedreader (new InputStreamReader (
Client.getinputstream ()));
String inputline = Reader.readline ();
System. out. println ("Inputline for:" + inputline);
String ResourceUrl = inputline.substring (
Inputline.indexof ('/') + 1, inputline.lastindexof ('/')-5);
int i = 0;
while ((Inputline = Reader.readline ()) = null) {
if (Inputline.equals ("")) {
break;
}
i++;
System. out. println ("First" + i + "line HTTP header information is:" + inputline);
}
ResourceUrl = Urldecoder. Decode (ResourceUrl, "UTF-8");
System. out. println ("Request resource:" + ResourceUrl);
File File = new file (ResourceUrl);
PrintStream OutStream = new printstream (Client.getoutputstream ());
if (File.exists () &&!file.isdirectory ()) {
System. out. println ("file exists");
Outstream.println ("http/1.0-ok");
Outstream.println ("mime_version:1.0");
Outstream.println ("content_type:text/html");
Outstream.println ("content_length:" + file.length ());
Outstream.println ("");
Transportfile (outstream, file);
Outstream.flush ();
} Else {
String notFound = "
Outstream.println ("http/1.0 404 No Found");
Outstream.println ("content_type:text/html");
Outstream.println ("content_length:" + notfound.length () + 2);
Outstream.println ("");
Outstream.println (NotFound);
Outstream.flush ();
}
Outstream.close ();
long b = 1;
while (b < 3600000) {
b++;
}
Reader.close ();
Client.close ();
} catch (Exception e) {
SYSTEM.OUT.PRINTLN ("Error in the Run method:" + e.getmessage ());
} finally {
/*
* try {//client.close (); SYSTEM.OUT.PRINTLN ("This request was successfully closed! "); } Catch
* (IOException e) {e.printstacktrace ();}
*/
}
}
Public void transportfile (printstream ps, file file) {
Try {
DataInputStream in = new datainputstream (new fileinputstream (file));
byte temp[] = new byte[10240];
int a = 0;
while ((A = in.read (temp, 0, 10240))! =-1) {
Ps.write (temp);
Ps.flush ();
}
In.close ();
} catch (IOException e) {
System. out. println ("Error in file transfer, error message:" + e.getmessage ());
} finally {
Ps.close ();
System. out. println ("transmit complete");
}
}
}
file two: index.html
<! DOCTYPE HTML PUBLIC "-//w3c//dtd HTML 4.01 transitional//en" "HTTP://WWW.W3.ORG/TR/HTML4/LOOSE.DTD" >
<meta http-equiv="Content-type" content= "text/html; Charset=utf-8 ">
<title> my Java Web server </title>
<body>
<center>
Hello, daxiongjie!. This is wuyou!
Wish 2017
<form action="/index.html">
<img alt= "" src="test.jpg">
<br/>
<br/>
<br/>
<video width= "height=" controls= "controls">
<source src=" half Demon Allure mp4" type="Video/mp4" >
Your browser does not support this type of video format.
</video>
</form>
</center>
</body>
multithreaded static Web server development Mini-Test (Java)