https://github.com/aryak0512/socket-programming
A custom web server created from scratch using Java sockets that can serve concurrent requests. This server has a test page (similar to Apache's) and a sign up page from which form data can be read.
https://github.com/aryak0512/socket-programming
java-8 socket-programming sockets web webserver
Last synced: 21 days ago
JSON representation
A custom web server created from scratch using Java sockets that can serve concurrent requests. This server has a test page (similar to Apache's) and a sign up page from which form data can be read.
- Host: GitHub
- URL: https://github.com/aryak0512/socket-programming
- Owner: aryak0512
- Created: 2023-10-28T10:17:00.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2023-10-29T17:19:00.000Z (over 2 years ago)
- Last Synced: 2025-03-05T02:18:35.574Z (over 1 year ago)
- Topics: java-8, socket-programming, sockets, web, webserver
- Language: HTML
- Homepage:
- Size: 41 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Custom Web server
This is a pure Java implementation of a multithreaded web server written by me from scratch which can serve 10 concurrent requests. This project uses the socket programming Java API from the java.net package
## Demo
https://github.com/aryak0512/socket-programming/assets/57310005/75916e0b-bf57-42f8-8a42-6ead2c697315
## Run Locally
Clone the project
```bash
git clone https://github.com/aryak0512/socket-programming.git
```
Go to the project directory
```bash
cd socket-programming
```
Install JDK 11
Start the server. Right click -> Server.java -> Run as Java Application. Server is ready to accept requests on port 7200.
## Deployment
To build this project run
```bash
java -jar webserver.jar
```
## Load tests
Concurreny Test results
This is ApacheBench, Version 2.3 <$Revision: 1879490 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient).....done
Server Software:
Server Hostname: localhost
Server Port: 7200
Document Path: /signup
Document Length: 0 bytes
Concurrency Level: 10
Time taken for tests: 0.003 seconds
Complete requests: 10
Failed requests: 0
Total transferred: 7210 bytes
HTML transferred: 0 bytes
Requests per second: 3644.31 [#/sec] (mean)
Time per request: 2.744 [ms] (mean)
Time per request: 0.274 [ms] (mean, across all concurrent requests)
Transfer rate: 2565.97 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 0.3 1 1
Processing: 0 1 0.2 1 1
Waiting: 0 0 0.3 0 1
Total: 1 1 0.2 1 2
Percentage of the requests served within a certain time (ms)
50% 1
66% 1
75% 1
80% 2
90% 2
95% 2
98% 2
99% 2
100% 2 (longest request)