Python–cookbook–11.网络与Web编程
相关介绍
from urllib import request, parse
import requests
url = 'http://httpbin.org/get'
parms = {
'name1': 'value1',
'name2': 'value2'
}
querystring = parse.urlencode(parms)
u = request.urlopen(url+'?' + querystring)
resp = u.read()
url2 = 'http://httpbin.org/post'
u2 = request.urlopen(url2, querystring.encode('ascii'))
resp2 = u2.read()
headers = {
'User-agent': 'none/ofyourbusiness',
'Spam': 'Eggs'
}
req = request.Request(url2, querystring.encode('ascii'), headers=headers)
u3 = request.urlopen(req)
resp3 = u3.read()
resp7 = requests.get(url)
resp8 = requests.get(url, cookies=resp7.cookies)
files = {'file': ('stock.csv', open('stock.csv', 'rb')) }
resp9 = requests.post(url, files=files)
import ipaddress
net = ipaddress.ip_network('123.45.67.64/27')
print(net, type(net))
print(net.num_addresses)
print(net[0])
a = ipaddress.ip_address('123.45.67.69')
print(a in net)
TCP-client
from socket import socket, AF_INET, SOCK_STREAM
s = socket(AF_INET, SOCK_STREAM)
s.connect(('localhost', 20000))
print(s.send(b'Hello'))
print(s.recv(8192))
TCP-server
from socketserver import BaseRequestHandler, TCPServer, StreamRequestHandler, ThreadingTCPServer
from threading import Thread
class EchoHandler(BaseRequestHandler):
def handle(self):
print('Got connection from', self.client_address)
while True:
msg = self.request.recv(8192)
if not msg:
break
self.request.send(msg)
class EchoHandler2(StreamRequestHandler):
def handle(self):
print('Got connection from', self.client_address)
for line in self.rfile:
self.wfile.write(line)
NWORKERS = 16
serv = TCPServer(('', 20000), EchoHandler)
for n in range(NWORKERS):
t = Thread(target=serv.serve_forever)
t.daemon = True
t.start()
serv.serve_forever()
TCP-server-socket
from socket import socket, AF_INET, SOCK_STREAM
def echo_handler(address, client_sock):
print('Got connection from {}'.format(address))
while True:
msg = client_sock.recv(8192)
if not msg:
break
client_sock.sendall(msg)
client_sock.close()
def echo_server(address, backlog=5):
sock = socket(AF_INET, SOCK_STREAM)
sock.bind(address)
sock.listen(backlog)
while True:
client_sock, client_addr = sock.accept()
echo_handler(client_addr, client_sock)
echo_server(('', 20000))
UDP-client
from socket import socket, AF_INET, SOCK_DGRAM
s = socket(AF_INET, SOCK_DGRAM)
print(s.sendto(b'', ('localhost', 20000)))
print(s.recvfrom(8192))
UDP-server
from socketserver import BaseRequestHandler, UDPServer, ThreadingUDPServer
import time
class TimeHandler(BaseRequestHandler):
def handle(self):
print('Got connection from', self.client_address)
msg, sock = self.request
resp = time.ctime()
sock.sendto(resp.encode('ascii'), self.client_address)
serv = UDPServer(('', 20000), TimeHandler)
serv.serve_forever()
UDP-server-socket
from socket import socket, AF_INET, SOCK_DGRAM
import time
def time_server(address):
sock = socket(AF_INET, SOCK_DGRAM)
sock.bind(address)
while True:
msg, addr = sock.recvfrom(8192)
print('Got message from', addr)
resp = time.ctime()
sock.sendto(resp.encode('ascii'), addr)
time_server(('', 20000))