Http Web Server
C HTML Other
Switch branches/tags
Nothing to show
Latest commit 940b057 Feb 27, 2017
Permalink
Failed to load latest commit information.
errors Copying project into new repository Jan 2, 2014
test_folder Copying project into new repository Jan 2, 2014
.gitignore cambios al gitignore Jun 6, 2014
Makefile Copying project into new repository Jan 2, 2014
README.md Update README.md Oct 3, 2014
bounded_buffer.c Copying project into new repository Jan 2, 2014
bounded_buffer.h Copying project into new repository Jan 2, 2014
csuc_http.h Copying project into new repository Jan 2, 2014
favico.ico Copying project into new repository Jan 2, 2014
http_server
log.c Copying project into new repository Jan 2, 2014
log.h Copying project into new repository Jan 2, 2014
server.c Added pid process info Jun 5, 2014
stimer.c Copying project into new repository Jan 2, 2014
stimer.h Copying project into new repository Jan 2, 2014
supporting_functions.c

README.md

Http-Server

C implementation of http Server that can host any http websites. Server can be run in following ways,

  1. Serially : Single thread of execution will handle every request one after another.
  2. Using processes : For new request new process is created.
  3. Using Threads : For new request new thread is created.
  4. Using ThreadPool : Limited number of threads handles the job one after another(most efficient).

Files:

bounded_buffer.c/h: Implementation of circular queue.

csuc_http: Implementation of head file that has structures of http header packages.

log.c/h: Functions that manages logs.

Server.c: Main implementation of server code.

Stimer.c/Stimer.h: All required functions to manage time.

supporting_functions.c: Small functions those are used in server.c

##Running Compile using MakeFile and run with the options available.

make
http_server -d sample_site

##Options

###-d : Set directory location of website to be hosted.

http_serve -d sample_site

###-p : Set port number of server.

http_serve -d sample_site -p 9000

###-f : Run server using multiple processes. For every new request process will get created.

http_serve -f -d sample_site -p 9000

###-t : Run server using threads. For every new request thread will get created.

http_serve -t -d sample_site -p 9000

###-w : Run server with limited numbers of worked threads.

http_serve -w 10 -d sample_site -p 9000

###-q : Limit the queue size for thread pool strategy. Only use this option with -w.

http_serve -w 10 -q 10 -d sample_site -p 9000

###Serial Operation : If no f,t,w options are provided, server will run in serial mode.

http_serve -w 10 -d sample_site -p 9000

###-v: Set log level to ERROR,WARNING,INFO or DEBUG.

http_serve -w 10 -d sample_site -p 9000 -v ERROR
http_serve -w 10 -d sample_site -p 9000 -v WARNING
http_serve -w 10 -d sample_site -p 9000 -v INFO
http_serve -w 10 -d sample_site -p 9000 -v DEBUG

##Signals Handled:

SIGINT|SIGTERM :

Use ctrl + c to shutdown server or use kill.

SIGUSR2:

Change the current log level.
    If process id for my server is 34567
    kill -SIGUSR2 34567
    Current log level INFO

SIGUSR1:

Display server statistics.
    If process id for my server is 34567
    kill -SIGUSR1 34567
-----------------------------SERVER iNFO-----------------------------
CURRENT LOG LEVELS               : ERROR,WARNING,INFO
Document Root                    : sample_site
Port No                          : 9000
Response Strategy                : Serial Operation
Total Requests handled           : 32
Total amount of data transferred : 415922 bytes
Total uptime                     : 0 hr,0 min, 15.325913309 seconds
Total time spent serving requets : 0 hr,0 min, 2.7236844123925454905 seconds
Avg time spent serving requests  : 0.08511513788 seconds
---------------------------------------------------------------------

###About Me :

I love coding and If you guys need any help, reach me on linkedin: http://www.linkedin.com/pub/ashish-chaudhari/85/529/52 Or Reach me at ashish2chaudhari@gmail.com