Problem:

Create a web proxy server that can be connected by a single client and would only allow http requests. The proxy server should be able to cache up to five recent websites.

Requirements:

1.Create a C/ Java based client-server architecture using sockets

2.The proxy server should be able to accept and service single clients http requests

3.The server should be run on cse01.cse.unt.edu machine and the clients should be run on any machine between cse02.cse.unt.edu and cse06.cse.unt.edu. The IP address of cse01.cse.unt.edu is 129.120.151.94

4.The proxy server should be able to cache at least five recent requested webpages, if available

Procedure:

1.Create a C/ Java based server that can accept single clients request using socket

2.The created proxy server should also be able to connect to the client requested website through port 80

3.Make sure the proxy server runs on cse01.cse.unt.edu and the format to start the proxy server is:
pserver < port_number>
where pserver is the proxy server executable and port_number is the port number on which the proxy server listens

4.Create a C/ Java based client that can connect to the proxy server using socket

5.Make sure the client runs on any of the CSE machines between cse02.cse.unt.edu and cse06.cse.unt.edu and connects the proxy server. The user can request the desired web page using the format given below:
client < port_number>
url: < url>
where client is the client executable, port_number is the port number on which the client connects the server and url is the requested URL

6.Once the proxy server gets a request from the client, it checks the availability of the web page in a list file (list.txt). If that page is not cached, then the proxy forwards the request to the web server.

7.The proxy server checks for the response from the web server

8.If the HTTP response is 200, the returned web page from the web server is cached in the proxy server. The proxy server stores the webpage in a file and assigns a filename based on the URL (eg. www.google.com).

9.The list file will store the URL of the webpage.

10.The list file stores five recent URLs. The cached websites that are not listed in the list file should be deleted.

11.Once the returned web page is cached, the web page is forwarded to the client. Verify to see if the returned page is same as the browser returned page.

12.If the HTTP response is not 200, do not cache the web page instead forward the HTTP response to the client.

13.Test web caching by accessing multiple websites.

14.A sample list.txt file is available on Blackboard for reference.

[Hint: To send a webpage request to the origin server, the proxy should create a request string by concatenating three substrings "GET / HTTP/1.1\r\nHost:", URL, and "\r\n\r\n", where URL is the requested URL sent by the client, e.g. "www.google.com".]

Instructions: Compile your programs (both client and server) and make sure they are working. Your code should be well commented and indented. Create a Readme file (text file) and write how to compile and execute your code.

Academic Honesty!
It is not our intention to break the school's academic policy. Posted solutions are meant to be used as a reference and should not be submitted as is. We are not held liable for any misuse of the solutions. Please see the frequently asked questions page for further questions and inquiries.
Kindly complete the form. Please provide a valid email address and we will get back to you within 24 hours. Payment is through PayPal, Buy me a Coffee or Cryptocurrency. We are a nonprofit organization however we need funds to keep this organization operating and to be able to complete our research and development projects.