联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-21:00
  • 微信:codinghelp

您当前位置:首页 >> Python编程Python编程

日期:2024-04-19 08:27

Comp 2322 Computer Networking

Project: Multi-thread Web Server

Due time: 11:59pm, April 21, 2024, Sunday

Total marks: 100 marks

Project objectives

This project aims to develop a socket program to implement a Web service using the

HTTP protocol.

Design requirements

In this project, you are required to develop a multi-threaded Web server in Python that is

capable of processing HTTP requests sent from browsers or some other client programs.

This multi-threaded program will be able to handle multiple requests at the same time.

Specifically, your Web server will

(i) create a connection socket when contacted by a client (browser);

(ii) receive the HTTP request from this connection;

(iii) parse the request to determine the specific file being requested;

(iv) get the requested file from the server’s file system;

(v) create an HTTP response message consisting of the requested file preceded by

header lines;

(vi) send the response over the TCP connection to the requesting client. If the client

requests a file that is not present in your server, your server should return a “404

Not Found” error message.

Your task is to implement the server program, run your server program, and then test

your server program by sending requests from the client programs running on different

hosts. You may run the server on your own computer, using the IP address of 127.0.0.1. If

you run your server on a host that already has a Web server running on it, then you should

use a different port than port 80 for your Web server.

You can develop your code in two stages. In the first stage, you can simply implement the

server program to receive the HTTP request messages and display the contents. After this

is running properly, you can add the code to generate appropriate responses in the second

stage. The Web server needs a log file to record statistics of the client requests. Each

request corresponds to one line of record in the log. Write down client hostname/IP

address, access time, requested file name and response type for each record. Your Web

server also needs to handle some simple errors, such as web-page not found.

You can use either Python, Java or C/C++ languages for the project. When implementing

the Web server, you are required to use basic socket programming classes to build the

Web server from scratch instead of using the HTTPServer class directly.

Submission requirements

Each student needs to submit a project package to Learn@PolyU, containing the

following documents:

x A project report that contains

o A cover page includes your name and student number;

o A summary of your design and implementation of the server program;

o A demonstration of executing your program and screen capturing of results of

all functions;

o A log file that records the historical information about the client requests and

server responses.

x Complete source code

o Your code should be commented appropriately.

x A README text file of how to compile and run your program.

The due time of the project is 11:59pm, April 21, 2024, Sunday, determined by

Learn@PolyU. Do not challenge this time and submit your project package a little

earlier. Late submission will cause the marks deducted 25% per day.

Assessment rubrics

The following rubrics will be used to evaluate your project quality and to determine

your grade (100 marks):

m-s

YNNNMM一 一一一一 一一一一 一一

x Design and implement the Web server program to support the following functions

(70 marks)

o Multi-threaded Web server (5 marks)

o Proper request and response message exchanges (5 marks)

o GET command for both text files and image files (10 marks, 5 marks each)

o HEAD command (10 marks)

o Four types of response statuses ONLY, including 200 OK, 400 Bad Request,

404 File Not Found, 304 Not Modified (20 marks, 5 marks each)

o Handle Last-Modified and If-Modified-Since header fields (10 marks)

o Handle Connection header field for both HTTP persistent connection

(keep-alive) and non-persistent connection (close) (10 marks, 5 marks each)

x Quality of your project’s report (25 marks)

o A good summary of your design and implementation of the server program

(10 marks)

o A full demonstration of executing your program and screen capturing of

results of all functions (5 marks)

o A complete log file (5 marks)

o A clear README text file (5 marks)

x Quality of your project’s source code (5 marks)

o Complete source code for the project

o Good naming and coding conventions used in your source code

o Compile the source code successfully

o Execute the program without runtime errors

Comp 2322 Computer Networking

Project Marking Sheet

Student Information Name Student ID

TA Information

Check List Marks

Design and implement the Web server program (70 marks)

o Multi-threaded Web server (5 marks)

o Proper request and response message exchanges (5 marks)

o GET command for both text files and image files (10 marks)

o HEAD command (10 marks)

o Four types of response statuses ONLY (20 marks)

o Handle Last-Modified and If-Modified-Since header fields (10 marks)

o Handle Connection header field (10 marks)

Quality of your project’s report (25 marks)

o A good summary of your design and implementation (10 marks)

o A full demonstration of executing your program and screen capturing of

results of all functions (5 marks)

o A complete log file (5 marks)

o A clear README text file (5 marks)

Quality of your project’s source code (5 marks)

o Complete source code for the project

o Good naming and coding conventions used in your source code

o Compile the source code successfully

o Execute the program without runtime errors

Total


版权所有:编程辅导网 2021 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。 站长地图

python代写
微信客服:codinghelp