/**{f}
*
SimpleWebServer.java
* Classe che è in attesa di connessioni e serve semplici documenti HTML
*
attraverso l'uso di socket
* @version 1.00 01/03/01
*
@author Bertolini Marta & Girotto Cristiano
*/
import
java.io.*.
import java.net.*.
public class
SimpleWebServer {
public static void main(String args[])
{
ServerSocket serverSocket = null;
Socket clientSocket = null;
int connects = 0;
try
{
// Crea il server socket
serverSocket = new ServerSocket(80, 5);
while (connects < 5)
{
// aspetta per una connessione
clientSocket = serverSocket.accept();
//Serve la connessione
ServiceClient(clientSocket);
connects++;
}
serverSocket.close();
}
catch (IOException ioe)
{
System.out.println("Error in SimpleWebServer: " + ioe);
ioe.printStackTrace();
}
}
public static void ServiceClient(Socket client)
throws IOException
{
BufferedReader inbound = null;
OutputStream outbound = null;
try
{
// Acquisisce lo streams per IO
inbound = new BufferedReader(
new InputStreamReader(client.getInputStream()) );
StringBuffer buffer = PrepareOutput();
String inputLine;
while ((inputLine = inbound.readLine()) != null)
{
System.out.println(inputLine);
//
all fine della richiesta, manda la risposta
if ( inputLine.equals("") )
{
outbound = client.getOutputStream();
outbound.write(buffer.toString().getBytes());
break;
}
}
}
finally
{
// Chiude le connessioni
System.out.println("Cleaning up connection: " + client);
outbound.close();
inbound.close();
client.close();
}
}
public static StringBuffer PrepareOutput()
{
StringBuffer outputBuffer = new StringBuffer();
outputBuffer.append("<HTML>\n<HEAD>\n<TITLE>Test
HTML Document</TITLE>\n");
outputBuffer.append("</HEAD>\n");
outputBuffer.append("<BODY>\n<STRONG>Ciao a Tom Orly e
Saimon Munaro !</STRONG>\n");
outputBuffer.append("</BODY>\n");
outputBuffer.append("</HTML>\n");
// Forma HTTP response header
StringBuffer headerBuffer = new StringBuffer();
headerBuffer.append("HTTP/1.0 200 OK\r\n");
headerBuffer.append("Content-type: text/html\r\n");
headerBuffer.append("Content-length: " + outputBuffer.length()
);
headerBuffer.append("\r\n\r\n");
headerBuffer.append(outputBuffer.toString());
return headerBuffer;
}
/**
* una semplice routine di sleep
* @param numero di millisecondi d'arresto
*/
private static void sleep(int a)
{
try
{
Thread.currentThread().sleep(a);
}
catch (InterruptedException e)
{
}
}
}