Python网络编程

这篇文章回顾了Python的网络编程相关知识。

网络模块

标准库中有许多网络模块,除此之外,也有许多第三方的网络模块。

socket模块

socket有两种形式:服务端socket和客户端socket。

创建好服务端socket后,它就会等待来自客户端socket的连接,它会以特定的网络地址(ip和端口号)来监听客户端的连接。

服务端socket代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import socket
s = socket.socket()
host = socket.gethostname()
port = 1234
s.bind((host,port))
s.listen(5)
while True:
c,addr = s.accept()
print('Got connection from', addr)
c.send('Thank you for connecting'.encode('utf8'))
c.close()

客户端socket代码:

1
2
3
4
5
6
7
8
9
import socket
s = socket.socket()
host = socket.gethostname()
port = 1234
s.connect((host,port))
print(s.recv(1024).decode('utf8'))
urllib和urllib2模块

urllib和urllib2模块允许你通过网络获取文件,作为程序的输入。如果进行简单的下载,urllib模块就足够;如果需要HTTP验证或cookie,那么urllib2是很好的选择。

打开远程文件:

1
2
3
4
from urllib.request import urlopen
webpage = urlopen('https://www.baidu.com')
print(webpage.read())

获取远程文件:

1
2
3
from urllib.request import urlretrieve
urlretrieve('https://www.baidu.com','E:\\baidu.html')