IP address | domain name | delay | |
1 | 176.221.87.1 | 1 | |
2 | 92.43.37.126 | f126.broadband2.quicknet.se | 1 |
3 | 10.5.12.1 | 10.5.12.1 (private) | 1 |
4 | 212.247.178.9 | 212.247.178.9 (RIPE NCC) | 1 |
5 | 130.244.39.46 | vst-ncore-1.bundle-ether1.tele2.net | 1 |
6 | 130.244.71.178 | kst5-core-1.bundle-ether6.tele2.net | 3 |
7 | 130.244.39.28 | gbg-core-1.hundredgige0-6-0-0.tele2.net | 9 |
8 | 130.244.205.179 | ams-core-2.bundle-ether1.tele2.net | 24 |
9 | 130.244.71.245 | nyc9-peer-1.ae0-unit0.tele2.net | 98 |
10 | 144.223.26.73 | sl-gw50-nyc-.sprintlink.net | 99 |
11 | 144.232.1.43 | sl-crs2-nyc-lc1-.sprintlink.net | 99 |
12 | 144.232.6.6 | 144.232.6.6 (Sprint) | 100 |
13 | 12.122.80.238 | cr2.n54ny.ip.att.net | 143 |
14 | 12.122.3.38 | cr2.wswdc.ip.att.net | 143 |
15 | 12.122.2.33 | cr1.wswdc.ip.att.net | 144 |
16 | 12.122.18.29 | cr2.sl9mo.ip.att.net | 146 |
17 | 12.122.2.217 | cr1.sl9mo.ip.att.net | 145 |
18 | 12.122.157.66 | cr82.ltrar.ip.att.net | 147 |
19 | 12.122.157.113 | 12.122.157.113 (AT&T) | 191 |
20 | 12.251.120.38 | 12.251.120.38 (AT&T) | 142 |
21 | 209.65.57.62 | 209.65.57.62 | 142 |
22 | 209.65.57.4 | 209.65.57.4 | 145 |
A primitive way of retrieving Web pages:
import socket
url = input('URL? ')
if url.startswith('http://'):
url = url[7:]
slash = url.find('/')
if slash < 0:
hostname = url
pagename = '/'
else:
hostname = url[:slash]
pagename = url[slash:]
conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
conn.connect((hostname, 80))
to_send = [
'GET ' + pagename + ' HTTP/1.1',
'Host: ' + hostname,
'']
for line in to_send:
utf8 = bytes(line + '\r\n', 'UTF-8')
conn.send(utf8)
next = conn.recv(102400)
length = 0
while next:
length += len(next)
next_str = next.decode('UTF-8')
print(next_str)
next = conn.recv(102400)
conn.close()
print('')
print('Total length: ' + str(length))