Python3 网络编程
Python3 网络编程
Python3 提供了丰富的网络编程相关模块,包括 socket、httplib、urllib、ftplib 等常用模块。网络编程是 Python3 在各种应用场景下均可发挥作用的一个重要领域。
socket 模块
socket 是 Python3 最基本的网络编程模块,可以用于实现 TCP、UDP 和 Unix 套接字。使用 socket,我们可以创建一个 Socket 对象,指定协议和网络类型。Socket 对象具有 connect、send、recv、bind、listen、accept 等一系列方法,可以实现网络数据的发送和接收。
例如以下代码,创建了一个 TCP 客户端连接:
import socket
HOST = '127.0.0.1' # 服务器的主机名或 IP 地址
PORT = 65432 # 服务器使用的端口号
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
s.sendall(b'Hello, world')
data = s.recv(1024)
print('Received:', repr(data))
httplib 模块
httplib 模块是 Python3 内置的 HTTP 客户端模块。它提供了 HTTP 请求和响应的基本功能。
例如以下代码,从远程服务器获取一个网页内容:
import http.client
conn = http.client.HTTPSConnection("www.python.org")
conn.request("GET", "/")
r1 = conn.getresponse()
print(r1.status, r1.reason)
data1 = r1.read() # 获取响应数据
print(data1)
urllib 模块
urllib 是 Python3 的一个网络处理模块,它既可以作为一个 HTTP/HTTPS/FTP 客户端发送请求,也可以是一个 HTTP/HTTPS/FTP 服务器端应答请求。urllib.request 模块定义了一个类、变量和函数,用于向 URL 发送 HTTP 请求并获取 HTTP 响应。
例如以下代码,从远程服务器获取一个网页内容:
from urllib import request
response = request.urlopen('http://www.baidu.com')
html = response.read()
print(html.decode('utf-8'))
ftplib 模块
ftplib 是 Python3 内置的 FTP 客户端模块,可以用于实现 FTP 协议。
例如以下代码,连接到 FTP 服务器,获取文件列表信息:
from ftplib import FTP
ftp = FTP('ftp.mozilla.org') # 连接到 FTP 服务器
ftp.login() # 登录
ftp.cwd('/pub/') # 切换到指定目录
ftp.retrlines('LIST') # 获取文件列表
ftp.quit() # 断开连接
这些仅仅是基本的应用示例,在实际项目中,client 和 server 都需要复杂的逻辑。网络编程不仅仅是如何编写一个简单的 socket、http 或者 ftp 客户端,更需要我们具备网络协议、分布式计算、网络安全等相关知识和经验。