
Learn how HTTP works and how to build a simple multithreaded HTTP server from scratch using TCP/IP sockets, including creating, binding, listening, exchanging messages, and closing connections.
Bind a socket by assigning an IP address and a port to a server, using sockaddr structures and the bind call, to listen for incoming connections.
Explore c++ socket connection handler: parse request type, file path, get data, cookies, and post data; guard thread count with mutex and enforce a 20-connection limit, bad request if exceeded.
Identify file upload requests via multipart form data, extract size and file name, create an empty file in the public downloads folder, and stream the uploaded content into it.
In this course we will design a multi-threaded HTTP web server in C++ using socket programming in Linux.
at the end of this course the student will have a good grasp of system programming and also :
1. how HTTP web server processes file request from clients in c++.
2. How the server can handle multiple accept request and concurrent connections using multi-threading in c++.
3. How uploaded files are received , assembled and stored on the server and how the server sends requested file back to the client in c++.
4. how the server receives request and differentiates the different types of request (GET, POST) in c++
5. how to fetch and store GET DATA, POST DATA and COOKIES on the server in c++.
6. You also learn about multi-threading using POSIX thread and how semaphores are used to apply lock in c++.
7. the difference between a web server , chat server, and other types of servers in c++.
8. How to implement networking library functions like accept(), bind(), listen(), socket() in c++
9. How the server accesses IP address of the client using the inet_ntop() function in c++.
10. Learn System programming- how to use system calls in Linux, here we used the OPEN system call in c++.
11. Learn System programming- File handling , how to create, read, write , receive and send files in Linux in c++.