This time I'd like to show you how to make a simple HTTP server and client in python. It's a bit different from other tutorials I've ever wrote and I'd like to say that I'm also a beginner in python. But, I'll try to make sure you understand what I wrote because this tutorial is easy.
First, you need to know what HTTP is. Definition of HTTP based on wikipedia:
In simple words, HTTP is a protocol that used for world wide web communication. So, if you're browsing the web, downloading data, and hosting a website, you're using HTTP protocol. There are many web server software that support HTTP protocol such as apache, nginx, and lighttpd. This time, you're so lucky because I'll show you how to make something like that (a simple version of course) in python language.
Step 1: Write HTTP server script using BaseHTTPServer module
Luckily, python provides us an HTTP server module, it's called
BaseHTTPServer. We use two classes from this module, namely
HTTPServer. We also need to use
os module to access file in your system.
First, we need to import those modules:
Next, write a custom class namely
KodeFunHTTPRequestHandler that implement
Finally, add following script to run the server:
Save it and name it whatever you want (e.g,
kodefun-httpserver.py). Here is the complete script of http server:
Step 2: Write a simple HTTP client
To check if our server is working fine, we need an HTTP client. You can use your web browser to do this. But, It'll be cool if you make your own client. To accomplish this, let's make another script, let's name it
kodefun-httpclient.py. Copy following script to your file:
Step 3: Test using GET command
The final step, we'll test is our scripts above work just fine. To run the server, type the following command in your command prompt or terminal:
If there is no problem, you'll see
"http server is running...". Next, we need to create a dummy HTML file, let's call it dummy.html and copy the code below:
Save it to your root folder defined in your script. In this example I use
c:/xampp/htdocs/. Next, we need to run the client, type following command to run the client:
When the client is running type following code to get
$ GET dummy.html
If there is no problem, and it should be no problem, you'll see the content of
That's all I can do this time. See you on my next tutorial.
Get completed project here.