Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.

ID: 3650609 • Letter: I

Question

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.DataOutputStream;
import java.net.Socket;
import java.net.ServerSocket;

/**
* A simple HTTP Server that can process GET and HEAD requests...
* @author <your name>
*
*/
public final class HTTPServer
{
final static String EOL = " "; // end of line

public static void main(String argv[]) throws Exception
{

int portNumber = 80; //do not hard code this; see the assignment specification for more detail.

ServerSocket serverSocket = new ServerSocket( portNumber );

while ( true )
{
Socket connectionSocket = serverSocket.accept();

//open IO Streams for input and output
BufferedReader input = new BufferedReader( new InputStreamReader( connectionSocket.getInputStream() ) );
DataOutputStream output = new DataOutputStream(connectionSocket.getOutputStream());

String fileData = "<html><body>Hello.</body></html>"; //here file data is hard-coded; instead, you need to get this from the file specified in the request

String response =
"HTTP/1.1 200 OK" + EOL +
"Server: My Web Server Version 0.1" + EOL +
"Content-Length: " + fileData.length() + EOL +
"Content-Type: text/html" + EOL +
EOL +
fileData;

output.writeBytes( response );

//close IO Streams and connection socket
output.close();
input.close();
connectionSocket.close();
}
}
}






Modify the above program that implements a simple web server. A client program, a web browser, will make a request to your server to retrieve a resource, and your server returns the requested resource or responds with the correct error code, in the case of an error. For this assignment you are required to implement only the GET and HEAD requests for your server, even though there are also other request methods supported by HTTP.

The first line of the HTTP request is the most important line, and the only part of the request message you are required to process for this assignment. This line has the format shown below.

GET /index.html HTTP/1.0
^ ^ ^
| | |
<Request-method> Requested-file <http-version>

After processing the request, your server returns the response in the following format.

<status line>
<header lines>
<blank line>
<data>

An example response message would look like the following:

HTTP/1.0 200 OK
Server: My Simple Web Server version 1.0
Content-Length: 32
Content-Type: text/html

<html><body>Hello.</body></html>

Your program should return one of the following error codes if the request does not succeed.

400 Bad Request
404 Not Found
505 HTTP Version Not Supported


Explanation / Answer

class TCPServer { public static void main(String argv[]) throws Exception { String clientSentence,clientpassword; String capitalizedSentence; ServerSocket welcomeSocket = new ServerSocket(4003); Connection con = null; String url = "jdbc:mysql://localhost:3306/"; String db = "database"; String driver = "com.mysql.jdbc.Driver"; String user = "root"; String pass = "root"; while(true) { Socket connectionSocket = welcomeSocket.accept(); BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream())); BufferedReader inFromClient1 = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream())); DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream()); clientSentence = inFromClient.readLine(); clientpassword = inFromClient.readLine(); System.out.println("Received User Name: " + clientSentence); System.out.println("Received Password: " + clientpassword); Class.forName(driver).newInstance(); con = DriverManager.getConnection(url+db, user, pass); Statement st = con.createStatement(); ResultSet res = st.executeQuery("SELECT * FROM table WHERE user='clientSentence' AND password='clientpassword'"); while (res.next()) { String u = res.getString("user"); String p = res.getString("password"); if (clientSentence.equals(u) && clientpassword.equals(p)){ capitalizedSentence = "Welcome "+clientSentence+" "; outToClient.writeBytes(capitalizedSentence); }else{ capitalizedSentence = "Sorry, not authorized "; outToClient.writeBytes(capitalizedSentence); } } }con.close(); } } import java.io.*; import java.net.*; import java.io.File; import java.io.FileInputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.net.Socket; import java.util.Arrays; import java.lang.*; import java.util.Scanner; class TCPClient { public static void main(String argv[]) throws Exception { String sentence,sentence1; String modifiedSentence; BufferedReader inFromUser = new BufferedReader( new InputStreamReader(System.in)); BufferedReader inFromUser1 = new BufferedReader( new InputStreamReader(System.in)); Socket clientSocket = new Socket("localhost", 4003); DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream()); DataOutputStream outToServer1 = new DataOutputStream(clientSocket.getOutputStream()); BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); Console console = System.console(); String username = console.readLine("Enter your Username :"); char pswd[] = console.readPassword("Enter your Password :"); String upwd=new String(pswd); outToServer.writeBytes(username + ' '); outToServer1.writeBytes(upwd + ' '); modifiedSentence = inFromServer.readLine(); System.out.println("FROM SERVER: " + modifiedSentence); } clientSocket.close(); } }