Why use “socket”?
Sockets are backbone of networking. They make the transfer of information possible between two or more applications or devices.
What is a “socket”?
A socket is one endpoint of a two-way communication link between two system running on the network.
A socket is bound to a port number so that the connection layer can identify which application the data is destined to be sent to.
An endpoint is a combination of an IP address and a port number.
Additional reading: https://en.wikipedia.org/wiki/IP_address
Network protocols
A protocol is a standard set of rules for transferring data
Protocol | Port Number | Python Library | Function |
HTTP | 80 | httplib, urllib | Web Pages |
FTP | 21 | ftplib, urllib | File Transfer |
SMTP | 25 | smtplib | Sending email |
Telnet | 23 | telnetlib | Command line |
POP3 | 110 | poplib | Reading email |
**Just a few samples, there are a lot more. We will concentrate on HTTP and urllib library first.
Additional reading: https://docs.python.org/3/library/http.html
Additional reading: https://docs.python.org/3/library/ftplib.html
Additional reading: https://docs.python.org/3/library/poplib.html
Additional reading: https://docs.python.org/3/library/telnetlib.html
Additional reading: https://docs.python.org/3/library/smtplib.html
HTTP protocol
Can we use Python instead of a browser?
Yes, we can use Python and urllib or httplib library. You can read the example below
Additional reading: https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol
Example session
Below is a sample conversation between an HTTP client and an HTTP server running on www.example.com, port 80.
Client request
GET / HTTP/1.1
Host: www.example.com
Server response
HTTP/1.1 200 OK
Date: Mon, 23 May 2005 22:38:34 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 155
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
ETag: "3f80f-1b6-3e1cb03b"
Accept-Ranges: bytes
Connection: close
<html>
<head>
<title>An Example Page</title>
</head>
<body>
<p>Hello World, this is a very simple HTML document.</p>
</body>
</html>
We will do or try to use a lower level approach on our next session, for now let's use the easiest way.
What is “urllib” library?
It’s a URL handling module for Python.
It is used to fetch (Uniform Resource Locators). It uses the “urlopen” function to fetch its content.
Additional reading: https://en.wikipedia.org/wiki/URL
Additional reading: https://docs.python.org/3/library/urllib.html
Let’s try it!
The code below will read the page or web content from python.org web site.
File: exercise1.py
from urllib import request
r = request.urlopen(“http://python.org”)
print(r.read())
r.close()
Additional reading: https://docs.python.org/3/library/urllib.request.html#module-urllib.request
The code below will download a file from the given website.
File: exercise2.py
from urllib import request
url = “http://ftp.lysator.liu.se/pub/awe32/soundfonts/mean.zip”
r = request.urlopen(url)
f = open(“mean.zip”, “wb”)
f.write(r.read())
f.close()
r.close()
Additional reading: https://docs.python.org/3/library/functions.html#open
All source codes are available here
https://github.com/xdevsoft/bootcamp
You can freely download and copy them.
Video channel coming soon!
https://www.youtube.com/channel/UC5uQE5qZpvBIzcMYhKrVRXg